3-6行是XML的注释,用来描述这个脚本的功能。

第7行是STAX脚本命令的开始符,所有STAX脚本内容都要用它起始。第8行中script类似于编程语言中的定义变量的语句,在这里定义一个长度为2的数组LinuxMachine,其值为Linux1和Linux2。

第9-10行指定STAX脚本运行时调用的函数。第11-40行是函数的定义体。11行指定函数名为ListDirectory。

第12-39行定义一个循环,类似于Java中的for,但是这个循环是并行的。var="machineName" in="LinuxMachine"
表示此循环从LinuxMachine数组中获得输入,并且赋给machineName变量。

13行定义测试用例,在STAX脚本的运行中,可以根据运行结果来决定测试用例的结果,方便用户查看。

第14-37行表示其中的STAX脚本是顺序执行的。15-19行执行具体的STAF命令,其中location指定需要运行STAF命令的机器,可以由变量来动态指定,比如'%s' % machineName。 service表示需要调用的服务,在这里为process进程服务。request为需要传递给服务的参数。进程服务的参数分为几部分,首先是需要调用的命令"ls",parms指定需要传递给"ls"的参数"-l"。 wait表示需要等待这个命令结束才能返回。stdout表示将命令运行的结果输出到文件中去。

20-31行判断上个命令的返回结果,并根据返回结果的值设定测试用例的状态,并且记录日志以及将消息发送到STAFMonitor。expr="RC==0"判断返回结果是否为0。 RC表示上个命令的返回结果,0表示命令执行成功。<tcstatus result="'pass'"/>设置测试用例状态为通过,fail则表示测试用例失败。<log message="1">表示不仅将消息记录到STAX的日志中,而且将其发送到STAFMonitor(如果STAFMonitor处于运行状态)。

32-36行是STAF的文件拷贝命令。fs表示文件系统服务,copy FILE指定复制文件操作,TOFILE指定目标文件的名字,STAX会用命令后面的参数% machineName替换%s,因此目标文件的名字为lsLinux1.log和lsLinux2.log。 TODIRECTORY指定目标文件夹,TOMACHINE指定目标机器。

上述STAX脚本可以用staf local stax execute file SampleScript.xml wait执行,或者通过java -jar STAXMon.jar启动STAXMonitor来调用。

3.自动部署更新包

图2. STAF(STAX)环境拓扑

图2是本节将要介绍的简化的场景图。软件开发分为两部分,一部分是在CVS上的新的软件源码,另外一部分是在FTP服务器上的执行脚本。在STAF(STAX)自动部署更新包的过程中,STAX需要同时从CVS和FTP上下载新的代码和安装脚本。 测试环境中,测试机器上都装有STAF,并且在从CVS和FTP下载代码的机器上安装有STAX。

STAX下载完代码后,将代码拷贝到用于编译的服务器上。因为代码的编译需要特殊的环境,比如需要WAS (WebSphere Application Server) 的环境,因此我们把STAX服务器和编译服务器分开。 编译服务器编译好源码之后,将其分发到部署和测试服务器上。部署服务器负责向应用程序服务器部署程序,而测试服务器则用来进行自动化测试。

本节根据这个场景介绍如何通过STAF(STAX)来实现部署和测试的自动化。

3.1 FTP脚本

STAF(STAX)实现了自动化测试的框架,但并没有实现具体的常用功能,比如FTP, CVS。因此我们需要借助FTP命令来完成FTP源码的下载。自动化下载一般通过命令行实现,因此我们使用Windows自带的FTP命令来完成。

FTP命令提供了一个参数-s,可以指定一个FTP脚本文件来存放将要执行的FTP命令。因此我们把需要执行的FTP命令存放到某个文件,然后通过STAX调用FTP命令实现FTP上源码的自动下载。

代码4:FTP脚本(ftpSample.conf)示例

    open ftp.ibm.com
    username
    password
    binary
    prompt
    cd /code/latest/unix
    lcd C:latestunix
    mget *
    bye

这个FTP脚本表示以用户名username,密码password访问ftp.ibm.com,设置传输方式为binary,然后下载/code/latest/unix下的文件到本地目录C:latestunix。可以通过ftp -s:ftpSample.conf来运行此脚本。