Doc:latest/taeguide/runtae

Contents

TAE help

To know about various TAE options, you can use "tae --help". This provides detailed information about all the TAE options and their usage.

# <TAEBASE>/tae/tae --help

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~  OpenClovis Test Automation Environment (TAE) - Version 0.8 ~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Usage:
  tae [options] [command]
Options:
  -h, --help    This help page
  fetch
  -f, --force   Force action despite stamp shows it has been completed in
                previous session, but executing unfinished prerequisites
  -i, --ignore  Ignore prerequisites. Same as -f (--force), but it does not
                check for prerequisites. This should be used only if you
                specifically want to skip prerequisites.
  -q, --quiet   Be more quiet (can be issued multiple times)
  -v, --verbose Be more verbose (can be issued multiple times)
  -s, --suppress
                Do not show testcase error details on TAE console output
  -u, --unload-tipc
                Unload the tipc kernel module before starting SAFplus Platform during the
                start stage
  -b, --no-nodeinfo
                Do not show nodeinfo/bladeinfo for each fixture node. By
                default this information is requested and printed for each node
  -w <cols>, --width=<cols>
                Use this width instead of the actual width of the terminal
                when printing results to output
  -c, --clean   Run a 'make clean' before configure
  -r, --revert  Run an 'svn revert' on any SVN-based images before running
                'svn update' on the tree
  --show-config Shows all the config attributes parsed from the config files
                and then quits
  -o <variable>=[<value>]
                Allow manual override of a config attribute
  -d            Start tae in debug mode. Any Python error will launch a JIT
                Python debug (pdb) session, allowing quick code analyzis.
                This applies to Python errors in testcases too, which would
                otherwise let TAE to continue
  -n, --netid   Manual override of the TIPC netid that will be used on the
                target
  -p <port>, --gms-port=<port>
                Manual override of the GMS port number used on the target
  -m <mcast-ip>, --gms-mcast=<mcast-ip>
                Manual override of the GMS multicast IP address
  -L, --list    List test cases in model
  -l <file>, --log=<file>
                Put detailed tae log here (default is log/tae.log)
  -t <filter>, --testcase-filter=<filter>
                Execute test cases matching this filter expression only (by
                default all testcases in model are executed). A filter
                expression is a testcase identifier, with wildcard characters
                also allowed. Examples:
                    TAE-TST-ACC.TC001
                    TAE-TST-ACC.TC0??
                    *-ACC*
                    *TC001
  -T <file>, --testcase-file=<file>
                Execute test cases specified in this file. The first word of
                each line is treated as a filter expression which will be
                matched against testcase ids. Lines started with a comment
                character (#) are ignored.
  -C <config-file>, --config=<file>
                Config file to define the model, fixture, mapping, and other
                operational parameters. This information can be provided in
                one single file, or can be separated into multiple config
                files. To read more than one config file this option can be
                used repeatedly. If the same configuration attribute is defined
                in more than one file, the last read file takes precedence.
                If no config file is specified, tae will attempt to
                read all local files with '*.cfg' extensions in alphabetical
                order.

  Deprecated config file options:
  The following four options are still allowed, but their use is deprecated.
  Use the -C option instead to read any and all config files.
  -E <file>, --environment=<file>
                Environment definition config file.
  -F <file>, --fixture=<file>
                Test fixture config file.
  -M <file>, --model=<file>
                Model definition config file.
  -P <file>, --mapping=<file>
                Model node name to fixture node mapping config.

Command:

  Command describes what needs to be done in terms of the sequential stages
  of a full test run. The following stages are defined (in the order of
  progression):

    fetch, populate, configure, build, package, deploy, start, test, stop

  The following forms are allowed as command:

    <stage>     Run up to this stage, doing all prerequisites (any previous
                stages that were not done yet)

  When no command is specified, the last stage  (report) is assumed to be the
  target stage.

  When combined with the -f (--force) option, the command can be in either of
  the following forms:

    <stage>     Redo this stage even if it has been done before. Also do all
                prerequisite stages if they have not been completed yet
    <stage>    Redo all stages from fetch to the named stage, even if all or
                some have been done previously.
    <stage>:    Starting from named stage, redo everything
    <st1>:<st2> Redo everything from stage st1 through stage st2

  When the -i (--ignore) option used, TAE does not check for prerequisites,
  but attempt to run the specified stage or stages. It implies the -f (--force)
  option.

  The meanings of these stages are:

    fetch       Fetch model for purpose of test case extract
    populate    Grab the images and populate working dirs for build
    configure   Configure the project for target fixture
    build       Build project for target fixture
    package     Package project for target fixture deployment
    deploy      Deploy images to target fixture
    start       Bring up SAFplus Platform on target fixture
    test        Run all or selected tests
    stop        Shut down SAFplus Platform on target fixture

TAE configuration files

To run TAE with your model, you need to create a directory (rest of the document will refer to this directory using the symbol <TAECFGDIR>). It is generally a good idea to create separate <TAECFGDIR> for testing different models. A <TAECFGDIR> should contain at least following configuration files (these are just sample files, you need to change the configuration according to your requirement):

mapping.cfg

<!-- This file maps SAFplus Platform model node names to fixture node names -->
<map_config ver="1.0.0.0">
  <mapping>
    <SCNode0  node="node1" role="controller" order="1" asp_dir="/root/simulation/asp1"/>
    <SCNode1  node="node2" role="controller" order="2" asp_dir="/root/simulation/asp2"/>
    <WorkerNode0  node="node3" role="worker" order="3" asp_dir="/root/simulation/asp3"/>
    <WorkerNode1  node="node4" role="worker" order="4" asp_dir="/root/simulation/asp4"/>
    <WorkerNode2  node="node5" role="worker" order="5" asp_dir="/root/simulation/asp5"/>
    <WorkerNode3  node="node6" role="worker" order="6" asp_dir="/root/simulation/asp6"/>
    <WorkerNode4  node="node7" role="worker" order="7" asp_dir="/root/simulation/asp7"/>
    <WorkerNode5  node="node8" role="worker" order="8" asp_dir="/root/simulation/asp8"/>
  </mapping>
  <gms mcast_port="8788" />
  <tipc netid="8239" />
</map_config>
  • Where SCNode0, SCNode1, WorkerNode0, etc are the node instances of the model. You also need to mention the role of the node instance. The "order" field is used to set the order of SAFplus Platform bring up on the nodes. "mcast_port" in gms tag can be used to override the value of "GMS_MCAST_PORT" present in "<model>/src/target.conf" Similarly "netid" in tipc tag can be used to override the value of "TIPC_NETID" (these values will be overridden in the "package" stage of TAE)
  • asp_dir attribute is required only when TAE has to run in simulation setup(It deploys the asp images to specified directory), otherwise this attribute has to be removed.

fixture.cfg

<fixture_config ver="1.0.0.0">
 <build_server ip='localhost' os='kubuntu' user='build_user' password='password' />
 <nodes>
  <node1 ip='10.10.3.10' os='wrs-pnele-1.4' crossbuild='i586-wrl-pnele1.4-2.6.14-mpcbl0001' user="root" password="password-of-this-node" />
  <node2 ip='10.10.3.20' os='wrs-pnele-1.4' crossbuild='i586-wrl-pnele1.4-2.6.14-mpcbl0001' user="root" password="password-of-this-node" />
  <node3 ip='10.10.3.30' os='wrs-pnele-1.4' crossbuild='i586-wrl-pnele1.4-2.6.14-mpcbl0001' user="root" password="password-of-this-node" />
  <node4 ip='10.10.3.40' os='wrs-pnele-1.4' crossbuild='i586-wrl-pnele1.4-2.6.14-mpcbl0001' user="root" password="password-of-this-node" />
  <node5 ip='10.10.3.50' os='wrs-pnele-1.4' crossbuild='i586-wrl-pnele1.4-2.6.14-mpcbl0001' user="root" password="password-of-this-node" />
  <node6 ip='10.10.3.60' os='wrs-pnele-1.4' crossbuild='i586-wrl-pnele1.4-2.6.14-mpcbl0001' user="root" password="password-of-this-node" />
  <node7 ip='10.10.3.90' os='wrs-pnele-1.4' crossbuild='i586-wrl-pnele1.4-2.6.14-mpcbl0001' user="root" password="password-of-this-node" />
  <node8 ip='10.10.3.100' os='wrs-pnele-1.4' crossbuild='i586-wrl-pnele1.4-2.6.14-mpcbl0001' user="root" password="password-of-this-node" />
 </nodes>
 <description>
    HP 14-slot chassis with MPCBL0001 cards
 </description>
 <lockfile value="/home/build_user/run_tae/test_on_hp/hp_chassis.lock" />
 <!--simulation value="yes"/-->
</fixture_config>
  • Normally the build server (where the SAFplus Platform code along with the model is compiled) is localhost (the same machine from where TAE is being run). One can use any other machine on the network for this purpose by specifying the ip, username and password of that machine. <nodes> tag contains the information about the machines where SAFplus Platform will be running during the test run.
  • "crossbuild" attribute in node<number> tag is used for the purpose of building the SAFplus Platform binaries for the machine which is architecturally different than the build machine. The value of "crossbuild" attribute should be the name of the toolchain present for that kind of achitecture (located in <sdk-dir>/buildtools/"). If architecture of build and target machine are same, then "crossbuild" field has to be removed.
  • lockfile tag can be used to maintain the integrity of the test. Once specified it doesn't allow any other test to use the same fixture. This way you can avoid interrupting an already running test on the same fixture.
  • simulation value is used only when tae has to be run in simulation mode i.e. more than one node on same machine.

model.cfg

<model_config ver="1.0.0.0">
<project value="YOUR_PROJECT_NAME" />
<models>
  <amsTestGeneric>
    <image_source value="dir:~/run_tae/test_on_hp/asptest3.1/" />
    <!--image_source value="svn://<svn-user>:<password>@clovisforge.openclovis.org:8888/svn/asptest/branches/3.1" /-->
    <make_options value="AMS_PERF_TEST=1" />
  </amsTestGeneric>
</models>

<asp>
  <image_source value="dir:~/run_tae/test_on_hp/clasp3.1/" />
  <!--image_source value="http://<ip>/<path-to-the-tarball>/openclovis-sdk-3.1-latest.tar.gz" /-->
  <!--image_source value="svn://<svn-user>:<password>@clovisforge.openclovis.org:8888/svn/clasp/branches/3.1/maint/" /-->
</asp>

<testcase_dir  value="~/run_tae/test_on_hp/asptest3.1" />

<buildserver>
    <sdk_root_dir value="/opt/clovis" />
    <asp_dir      value="~/run_tae/test_on_hp/clasp3.1" />
    <project_dir  value="~/run_tae/test_on_hp/asptest3.1" />
</buildserver>

<!--skip_stages value="start" /-->
</model_config>
  • This file contains the model specific configurations like model name, make options, source code directory etc. In the above sample file "amsTestGeneric" is the model name.
  • Below are the description of all the tags in the model.cfg file:
    • <image_source>: In this attribute, we have to specify the location of SAFplus Platform source code and model directory. This can be any directory on build server (In the example it is ~/run_tae/test_on_hp/clasp3.1/ directory on build server) or it can be the path from where we have to checkout from SVN or any other repository or it can be any link on internet or ftp details.
    • <make_options>: In this tag we provide all the flags with which we have to compile the code. In the example above it is AMS_PERF_TEST=1. So, code will be compiled with "make AMS_PERF_TEST=1".
    • <testcase_dir>: It is the directory where all test cases of the model will be present.
    • <sdk_root_dir>: In this we specify the directory where sdk is installed.
    • <asp_dir>: In this we specify the directory where SAFplus Platform is checked out.
    • <project_dir>: In this we specify the directory where model is checked out.
    • <skip_stages>: By specifying this we can skip some of the steps of complete tae run.
  • There are many ways to specify the location of SAFplus Platform source code. "dir:" can be used to specify the local directory as the source code directory for SAFplus Platform in the <asp> <image_source> tag and <model-name><image_source> tag for the model directory.

env.cfg

<env_config ver="1.0.0.0">
  <svn> 
    <timeout>
      <checkout value='10000' />
      <update   value='10000' />
      <revert   value='3000' />
      <status   value='6000' />
    </timeout> 
  </svn>
  <report_url value="scp://<user>:<password>@<ip>/<taereport-dir>/import" />
  <!--report_url value="scp://testuser:test@192.168.0.100/taereport/import" /-->
</env_config>
  • This file contains the timeout values for various TAE operations. After the test run TAE will send the report tarball to the machine specified in <report_url>. Below are the list of all tags used in this config file:
    • checkout: It is time in seconds for which tae will wait for checkout to happen before timing out.
    • update: It is time in seconds for which tae will wait for svn update to complete before timing out.
    • revert: It is time in seconds for which tae will wait for svn revert before timing out.
    • status: It is time in seconds for which tae will wait for svn status before timing out.
    • report_url: specify the command to upload the test results to the TAE Report Server (to the web GUI). Comment this line out if you do not want your test results to be submitted.

Selecting and running the tests

If following command is issued from the <TAECFGDIR> directory, it lists all the test cases present in the model.

        # <TAEBASE>/tae/tae -L
	#----------------------------------------------------------------------
	# ID              State  Brief description
	#----------------------------------------------------------------------
	AMF-CMP-KIL.TC001   E    Active Comp Kill Test : Verify SI/CSI assignments after fail-over
	AMF-CSI-DEP.TC001   E    CSI Dependency Test : Verify CSI assignments order after switch-over
	AMF-HA-TST.TC001    E    SI Swap Test : Verify SI/CSI assignments after switch-over
	AMF-HA-TST.TC002    E    SU Lock Test : Verify SI/CSI assignments after switch-over
	AMF-NOD-LCK.TC001   E    Node Lock Test : Verify SI/CSI assignments after switch-over
	AMF-RDN-PRC.TC001   E    AMF Reduction Procedure Test : Verify SI/CSI assignments in the reduced mode
	AMF-SU-SDN.TC001    E    SU Shutdown Test : Verify SI/CSI assignments after switch-over
	

you can then put some of the test cases in a file (say tests.lst) and specify the test-case-filter-file name while running tae using -T switch

# <TAEBASE>/tae/tae -T tests.lst -f fetch:stop
  • Note that the above command should be issued from <TAECFGDIR> directory for the model
  • It will execute all the steps from fetch to stop (fetch, populate, configure, build, package, deploy, start, test, stop).
  • Some of the steps can be skipped by specifying the stage-name in <skip_stages value="" /> tag present in "model.cfg" file. Alternatively, you can also specify something like "-f build:test" if the requirement is to build the model from already existing code base and then run the test cases.
  • If neither of "-t" or "-T" switch is specified, then TAE runs all the test cases present in the "<model>/src/test" directory. One can also use "-t *" to run all the test cases. Remember, the regular expression syntax is supported while specifying the filter for testcases, which can be very handy sometime.

TAE logs

TAE log files will be present in "log" directory of your model <TAECFGDIR>. Following log files are created by TAE for various different purposes:

  • tae.log : contains detailed log of all the commands executed by the TAE while performing the test.
  • bash_127.0.0.1_build_server.log : Contains the logs of commands executed during the SAFplus Platform and model build. It also contains the "make" output in case of build error.
  • bash_local.log : Contains the commands performed on the local machine like scp the tarball to the remote nodes etc.
  • Node level postmortem files (e.g. SysCtrlI0.postmortem.tgz) : Contains the node level logs as well as the runtime files of the node.