• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

利用 STAF 实现程序更新包的自动部署测试

发布: 2009-5-21 09:32 | 作者: 不详 | 来源: 测试时代采编 | 查看: 90次 | 进入软件测试论坛讨论

领测软件测试网

  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/

22/2<12

关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网