技术开发 频道

使用CruiseControl和STAF建立复杂环境下的编译和测试自动化

    下载配置 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 所示。

0
相关文章