Hi Lucas

    Your advice is really helpful, I understood the reason under your
    illustration.

    The reason is that I was starting STAF by calling
    ". /usr/local/staf/startSTAFProc.sh" in runTest.sh
    unfortunately, according to the man page, '.' reads and executes
    commands from filename in the current shell environment.
    The "current shell environment" seems contains current parameters.

    so, actually I was calling
    "/usr/local/staf/startSTAFProc.sh <testName>"
    and startSTAFProc.sh passed "testName: to STAFEnv.sh because
    it is calling ". /usr/local/staf/STAFEnv.sh".

Cao Yu

Sharon Lucas wrote:
> 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