STAF 的安装比较简单,只需要按照向导提示进行操作即可。安装完毕后,可以通过 STAFProc 命令启动 STAF。关闭 STAF 可以用如下的命令: staf local shutdown shutdown。从这条命令我们可以看出上面提到的 STAF 的命令格式。local 表示 STAF 的本地系统,shutdown 表示服务, 此服务提供了 STAF 的关闭操作。第二个 shutdown 表示传递给服务的参数,指示 STAF 把本地的 STAF 服务关闭。
STAX 的安装文件也可以从STAF 的网站下载。STAX 本身不需要安装,只需要更改 STAF 的配置文件以便 STAF 在启动的时候能够加载 STAX 服务。 从这个角度来说,STAX 是 STAF 的一种外部服务,可以根据需要来决定是否加载它。
下载完 STAX 后,将其解压到 $STAF_Install_Directory\services\stax 目录中,然后更改 STAF 的配置文件 STAF.cfg。此文件在 $STAF_Install_Directory\bin 目录下。 在 STAF.cfg 文件末尾加上如下的代码,然后重启 STAF。
代码1:STAX配置
SERVICE STAX LIBRARY JSTAF EXECUTE \
{STAF/Config/STAFRoot}/services/stax/STAX.jar OPTION J2=-Xmx384m
SERVICE EVENT LIBRARY JSTAF EXECUTE \
{STAF/Config/STAFRoot}/services/stax/STAFEvent.jar
SET MAXQUEUESIZE 10000
STAF重启之后,运行命令staf local service list,查看输出结果,如果显示有STAX和EVENT,如图1所示,则说明STAX已经成功加载。
图 1. STAF 服务列表
SERVICE STAX LIBRARY JSTAF EXECUTE {STAF/Config/STAFRoot}/services/stax/STAX.jar通知STAF在启动时以名字STAX(这样在STAF服务列表中,我们看到的STAX的服务名字就叫做STAX)来加载STAX.jar,也就是STAX服务。 传递的参数J2=-Xmx384m表示更改JVM的堆栈大小。如果STAX会出现OutOfMemory错误,则需要调整这个参数,增加JVM的堆栈大小。 建议在加载STAX时总是指定这个参数,并且根据系统环境来调整参数大小。
SERVICE EVENT LIBRARY JSTAF EXECUTE {STAF/Config/STAFRoot}/services/stax/STAFEvent.jar通知STAF在启动时以名字EVENT来加载STAFEvent.jar。
如果需要在运行STAX的机器上运行STAX Monitor (STAX任务的监控工具),则需要设置MAXQUEUESIZE,以保证STAXMonitor能够正确运行。
2.1 STAF Java 代码示例
代码2所示的是STAF Java代码示例。
代码2:STAF Java代码示例
STAFHandle handle = null;
try {
handle = new STAFHandle("Java_Sample_Test");
} catch (STAFException e) {
System.exit(1);
}
STAFResult result = handle.submit2("Linux1", "process",
"start command ls parms -l wait stdout /root/lsjava.log");
if (result.Ok != result.rc) {
System.out.println("Error starting the process ls, RC: " + result.rc);
}
result = handle.submit2("Linux1", "fs", "copy FILE /root/lsjava.log
TODIRECTORY C:/STAF TOMACHINE windows' % machineName");
if (result.Ok != result.rc) {
System.out.println("Error coping file, RC: " + result.rc);
}
在调用STAF服务之前,首先需要注册STAFHandle,所有的STAF服务调用都要通过这个句柄来进行,因此一般把这个句柄设置成静态的。通过handle.submit2()函数可以向STAF服务发送请求并且接收处理结果。
2.2 STAX脚本示例
STAX为我们简化了调用STAF服务的过程,因此我们通过STAX脚本来调用STAF服务。本节将根据一个简单的示例来简要介绍STAX脚本的语法。
代码3:STAX脚本SampleScript.xml示例
1 <?xml version="1.0" encoding="UTF-8" standalone="no"?> 2 <!DOCTYPE stax SYSTEM "stax.dtd"> 3 <!-- sample1.xml - Sample of a job definition file for STAX 4 Job Description: 5 This job executes some STAF commands and sends messages to the STAX Job Monitor. 6 --> 7 <stax> 8 <script> LinuxMachine = ['Linux1', 'Linux2'] </script> 9 <defaultcall function="ListDirectory"> 10 </defaultcall> 11 <function name="ListDirectory"> 12 <paralleliterate var = "machineName" in="LinuxMachine"> 13 <testcase name = "'listDirectory'"> 14 <sequence> 15 <stafcmd> 16 <location>'%s' % machineName</location> 17 <service>'process'</service> 18 <request>'start command "ls" parms "-l" wait stdout /root/ls.log'</request> 19 </stafcmd> 20 <if expr="RC == 0"> 21 <sequence> 22 <tcstatus result="'pass'"/> 23 <log message="1">'List directory successfully on %s' % machineName</log> 24 </sequence> 25 <else> 26 <sequence> 27 <tcstatus result="'fail'"/> 28 <log message="1">'Error in listing directory on %s' % machineName</log> 29 </sequence> 30 </else> 31 </if> 32 <stafcmd> 33 <location>'%s' % machineName</location> 34 <service>'fs'</service> 35 <request>'copy FILE /root/ls.log TOFILE ls%s.log TODIRECTORY C:/STAF TOMACHINE windows' % machineName</request> 36 </stafcmd> 37 </sequence> 38 </testcase> 39 </paralleliterate> 40 </function> 41 </stax>
文章来源于领测软件测试网 https://www.ltesting.net/