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>
文章來源于領測軟件測試網 http://www.kjueaiud.com/