The default root logging directory where the LOG service stores log files 
is described in section "8.8.3 Parameters" in the STAF User's Guide as 
{STAF/DataDir}/service/<Service Name (lower-case)>.  The {STAF/DataDir} 
variable is set based on the DATADIR operational parameter, which in 
section "4.7 Operational parameters" in the STAF User's Guide defaults to 
{STAF/Config/STAFRoot}/data/{STAF/Config/InstanceName}.  So, it would 
appear that you're setting the STAF_INSTANCE_NAME environment variable to 
Filesystem_Basic_1_1_maintance somewhere (overriding its default value of 
STAF), not setting the DATADIR operational parameter, but since the 
DATADIR operational parameter is set depending on the 
{STAF/Config/InstanceName} STAF variable (which is based on the value of 
the STAF_INSTANCE_NAME environment variable)..

You didn't provide the full content of your runTest.sh script.  I'm 
guessing that it  is running STAFEnv.sh to set the environment variables 
to use for STAF.  STAFEnv.sh accepts an optional argument that specifies 
the STAF instance name you want to use.  So, it would appear that somehow 
you're accidently passing STAFEnv.sh the testcase name that was passed in 
as an argument to runTest.sh).  Note that STAFEnv.sh does the following to 
determine STAF_INSTANCE_NAME:

if [ $# = 0 ]
then
    STAF_INSTANCE_NAME=STAF
else 
    if [ $1 != "start" ]
    then
        STAF_INSTANCE_NAME=$1
    else
        # Ignore "start" STAF_INSTANCE_NAME
        STAF_INSTANCE_NAME=STAF
    fi
fi

So, maybe the argument that you're pasing to runTest.sh is also being 
passed to STAFEnv.sh.  If you want STAF to be the STAF_INSTANCE_NAME, 
maybe try running STAFEnv.sh passing it STAF (e.g. . ./STAFEnv.sh STAF) in 
your bash script.

For more information on the STAFEnv.sh script, see section "5.1.1 Running 
Multiple Instances of STAFProc" in the STAF User's Guide and section "3.7 
STAFEnv script" in the STAF Installation Guide at 
http://staf.sourceforge.net/current/STAFInstall.pdf.

--------------------------------------------------------------
Sharon Lucas
IBM Austin,   luc...@us.ibm.com
(512) 286-7313 or Tieline 363-7313




Cao Yu <c...@nec-as.nec.com.cn> 
04/29/2009 01:04 AM

To
staf-users@lists.sourceforge.net
cc

Subject
[staf-users] How does STAF decide where to save logs






Hello Eeryone.

    I'm trying to write a bash script to make it possible that user could
    specify a special test to run. The aim is that when user gives a
    parameter, the parameter will be treat as a test name and only
    testcases with exactly the same name will be run. If user does not
    set any parameter, all test cases will be run.

--------bash script begins---------
#!/bin/bash
#filename: runTest.sh
  ....

START_FILE=`pwd`/run.xml

  ....

ARGS="'stafScriptsRoot': '$STAF_SCRIPTS_ROOT'"
if [ "$1" != "" ]; then
         ARGS="$ARGS, 'testCode': '$1'"
fi
if [ "$2" != "" ]; then
         ARGS="$ARGS, 'incCode': '$2'"
fi

echo $ARGS

echo "Now starting to run STAF tests ..."
STAF LOCAL STAX EXECUTE FILE $START_FILE ARGS "{$ARGS}" JOBNAME QAAF 
CLEARLOGS ENABLED WAIT RETURNRESULT

  ....

--------bash script ends---------
    *The content of run.xml please refer to the attachment.

    But I met a strange problem in saving logs.
    when I simply execute "./runTest.sh", all logs would be
    saved to /usr/local/staf/data/STAF/service/log/MACHINE/rplcli/GLOBAL/
    but when I give a parameter like "./runTest.sh
    Filesystem_Basic_1_1_maintance" ,  all logs would be saved to
 
/usr/local/staf/data/Filesystem_Basic_1_1_maintance/service/log/MACHINE/rplcli/GLOBAL/

    I have refered to the manual, it said that the log directory was
    decided by DATADIR, but I did not change the DATADIR setting.
    so it should be 
{STAF/Config/STAFRoot}/data/{STAF/Config/InstanceName}.
    and "STAF/Config/InstanceName"'s default value is "STAF".

    so usr/local/staf/data/STAF/service/log/ is correct,
    but where dose 
/usr/local/staf/data/Filesystem_Basic_1_1_maintance/service/log/ come 
from?









<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE stax SYSTEM "stax.dtd">
<stax>
        <defaultcall function="testSequence"/>

        <function name="testSequence" scope="global">
        <function-map-args>
                        <function-optional-arg name="stafScriptsRoot" 
default="'/home/xxxxx/STAFscripts'"/>
                        <function-optional-arg name="testCode" 
default="''">
                                Code of test to be executed. If not 
specified all tests will be executed.
                        </function-optional-arg>
                        <function-optional-arg name="incCode" 
default="''">
                                Code of test incarnation to be executed. 
If not specified all incarnations will be executed.
                        </function-optional-arg>
        </function-map-args>

        <sequence>
                <import machine="'local'" file="'library.xml'"/>
                <call function="'preTest'"/>

                <script>
                        hydraServerAN2IP="xxx.xxx.xxx.xxx"

                        from suit_jdom import *
                        from staf_util import *
                        suit = testsuit('generic.pro.xml');
                        #testsuit is class that parse generic.pro.xml and 
                        #
                        testList = suit.testList;
                </script>
                <!--script>
                        testList = suit.get().testList
                </script-->
                <iterate var="test" in="testList">
                <sequence>
                <testcase name="test.testName">
                        <sequence>
                                <log>"testName = %s"%(test.testName)</log>
                                <if expr="testCode == '' or test.testName 
== testCode">
                                <sequence>
                                <if expr="incCode == '' or 
test.incarnation == incCode">
                                <sequence>
                                <log>"testName = %s; testInc = %s" 
%(test.testName, test.incarnation)</log>
                                <script>
                                        testFile=test.testFile
 testScript=stafScriptsRoot+"/tests.staf/tests/"+testFile
                                        userParaList = 
getParaListFromTestScript(testScript)

                                        if 
userParaList.count('testCaseName') == 1:
                                                if not 
test.args.has_key('testCaseName'):
 test.args['testCaseName'] = test.testName;

                                        if 
userParaList.count('windowsServer') == 1:
                                                if not 
test.args.has_key('windowsServer'):
 test.args['windowsServer'] = suit.config.windowsServerName;
                                        if 
userParaList.count('hydraServer') == 1:
                                                if not 
test.args.has_key('hydraServer'):
 test.args['hydraServer'] = suit.config.hydraServerIP;
                                        if 
userParaList.count('guiAddress') == 1:
                                                if not 
test.args.has_key('guiAddress'):
 test.args['guiAddress'] = suit.config.GUIAddr;
                                        if 
userParaList.count('backupServer') == 1:
                                                if not 
test.args.has_key('backupServer'):
 test.args['backupServer'] = suit.config.backupServer;

                                        if userParaList.count('winServer') 
== 1:
                                                if not 
test.args.has_key('winServer'):
 test.args['winServer'] = suit.config.windowsServerName;
                                        if 
userParaList.count('backupServerIP') == 1:
                                                if not 
test.args.has_key('backupServerIP'):
 test.args['backupServerIP'] = suit.config.backupServer;
                                        if 
userParaList.count('hydraServerIP') == 1:
                                                if not 
test.args.has_key('hydraServerIP'):
 test.args['hydraServerIP'] = suit.config.hydraServerIP;
                                        if userParaList.count('GUIAddr') 
== 1:
                                                if not 
test.args.has_key('GUIAddr'):
 test.args['GUIAddr'] = suit.config.GUIAddr;
                                </script>
                                <call function="'execJob'">{'testName': 
test.testName,'testScript': testScript, 'xmlArgs':test.args}</call>
                        </sequence>
                        </if>
                        </sequence>
                        </if>
                        </sequence>
                </testcase>
                </sequence>
                </iterate>

                <call function="'postTest'">{'gui': 
suit.config.GUIAddr}</call>
        </sequence>

        </function>
</stax>


------------------------------------------------------------------------------
Register Now & Save for Velocity, the Web Performance & Operations 
Conference from O'Reilly Media. Velocity features a full day of 
expert-led, hands-on workshops and two days of sessions from industry 
leaders in dedicated Performance & Operations tracks. Use code vel09scf 
and Save an extra 15% before 5/3. http://p.sf.net/sfu/velocityconf
_______________________________________________
staf-users mailing list
staf-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/staf-users

------------------------------------------------------------------------------
Register Now & Save for Velocity, the Web Performance & Operations 
Conference from O'Reilly Media. Velocity features a full day of 
expert-led, hands-on workshops and two days of sessions from industry 
leaders in dedicated Performance & Operations tracks. Use code vel09scf 
and Save an extra 15% before 5/3. http://p.sf.net/sfu/velocityconf
_______________________________________________
staf-users mailing list
staf-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/staf-users

Reply via email to