下载配置 WAS 登录模块脚本
在删除上次自动化测试配置的登录模块之后,我们需要从 FTP 下载最新版本的配置登录模块的脚本。本文使用 Windows 自带的 FTP 命令来完成脚本的下载。FTP 上存放了不同时期的版本,每个版本使用文件名+时间戳的方式来区分,而 FTP 命令并没有提供下载最新脚本的功能,因此我们需要自己来判断那个脚本是最新的。首先利用 FTP 的 ls 命令来列出所有的版本文件,通过 java 程序来判断哪个是最新的版本,最后再利用 FTP 命令来下载最新的版本。STAX 脚本如下所示:
清单 9. 下载最新的版本文件
<sequence>
<process>
<location>'local'</location>
<command>'ftp'</command>
<parms>'-s:C:/Sample/ftpconf/ftplist.conf'</parms>
<workdir>'C:/Sample'</workdir>
</process>
<process>
<location>'local'</location>
<command>'java'</command>
<parms>'-cp . fileParsing.ParseBuildTime temp.txt ftptemplate.conf
ftpdown.conf'</parms>
<workdir>'C:/Sample'</workdir>
</process>
<process>
<location>'local'</location>
<command>'ftp'</command>
<parms>'-s:C:/Sample/ftpconf/ftpdown.conf'</parms>
<workdir>'C:/Sample'</workdir>
</process>
</sequence>
其中第一个 Process 命令从 FTP 服务器上获取所有的版本文件信息,保存到 temp.txt 文件中。ParseBuildTime 用来从版本文件列表 temp.txt 中找出最新的版本文件,并且根据提供的 FTP 模板文件 ftptemplate.conf 生成 FTP 脚本 ftpdown.conf,供 STAX 脚本调用下载最新的版本文件。第三个 Process 命令调用 ftpdown.conf 从 FTP 服务器下载最新的版本文件。
清单 10 显示了 FTP 模板文件,它是由一系列 FTP 命令组成。
清单 10. FTP 模板脚本
open ftp.ibm.com
user
password
binary
prompt
cd /sampledirectory
lcd C:\Sample\build
get "<template>" ConfigureLoginModule.zip
bye
分发和运行配置 WAS 登录模块脚本
本节把下载的最新版本文件解压缩后分发到 WAS 平台。解压缩使用 Winrar 命令来进行,如下所示:
清单 11. 使用 Winrar 命令解压缩
<process>
<location>'local'</location>
<command>'C:\Program Files\winrar\winrar.exe'</command>
<parms>'x -o+ C:/Sample/build/ConfigureLoginModule.zip'</parms>
<workdir>'D:/STAFDirectory/build/'</workdir>
</process>
如何分发文件和清单 7 类似,这里不再赘述。
将配置 WAS 登录模块脚本分发完成后,需要调用它完成 WAS 登录模块的配置。调用脚本的STAX 代码与清单 6 类似,这里也不再赘述。
重启 WAS
在完成 WAS 登录模块配置后,需要重启 WAS 来使配置生效。这里调用第三章的 WAS 重启脚本来完成WAS服务器的重启。在调用 WAS 重启脚本之前,需要分发此脚本到每个 WAS 服务器上。过程类似于清单 6 和清单 7 。有一点不同的是, WAS 重启脚本可能会需要运行较长一段时间,比如 5 分钟,因此 STAX 命令中的 wait 关键字不能忽略,表示需要等待 WAS 重启结束,如下所示:
清单 12. STAX 重启 WAS 脚本示例
<stafcmd>
<location> ‘%s’ % machine </location>
<service> ‘process’ </service>
<request> ‘start command "/root/script/RestartServer.sh" username "root" password
"password" workdir "/root/script" wait stdout /root/script/RestartServer%s.log'
% machineName
</request>
</stafcmd>
复制源码到编译机
在启动测试过程之前,CruiseControl 会调用 Ant 脚本从 CVS 下载最新的源码,包括 Web Service 源码、测试代码和 RFT 代码。在测试之前,我们需要将它们复制到编译机上进行编译,因为某些代码需要依赖于 WAS 或者 RFT 平台。
复制代码分为三个部分:
复制 Web Service 源码(被测试代码)。
复制测试代码 (Web Service 客户端以及 JUnit 代码)
复制 RFT 代码。
复制过程和清单 7 类似。
控制编译机编译源码
每个部分的源码都有 build.xml 文件,所以只需要调用 Ant 命令来编译即可。
清单 13. 编译源码
<stafcmd>
<location>'%s' % machine</location>
<service>'process'</service>
<request>'start command "c:/apache-ant-1.6.5/bin/ant.bat -buildfile %s/build.xml
> %s/build.log" username "Administrator" password "password" workdir %s wait'
% (sourceLocation, sourceLocation, sourceLocation)
</request>
</stafcmd>
与编译 Web Service 源码和测试代码不同的是, RFT 代码需要指定 RFT 安装的位置,这通过传递 Ant 参数来实现,如清单 14 所示。