配置复杂的云应用程序测试系统

使用 IBM Workload Deployer 和协作式应用程序生命周期管理

云应用程序继续变得越来越复杂,因此,无论只是一个生产级应用程序还是一个复杂的虚拟应用程序或系统模式,迅速交付云解决方案的任务都变得更加困难。作者将探讨试图建立一个可行的、容易重复的协作式生命周期管理系统(CLM,也称为协作式应用程序生命周期管理)时所涉及的复杂性,该系统可在 IBM® WebSphere® Application Server 上运行并使用 DB2® 作为数据库。

Bradley C. Herrin, 软件工程师, IBM

Herrin 从带薪实习期开始为 IBM 工作,他在北卡罗来纳州立大学完成了他的计算机科学的本科学业。他从 Rational Application Developer (RAD) 测试团队开始了他的职业生涯,重点研究 JSF 和 JPA 的 Web 工具。在为 RAD 团队工作时,Herrin 获得了使用 Rational Build Forge 开发一些高度敏捷的自动化安装/配置的机会;这个机会为他打开了调动至 Rational Core Automation Team 的大门,如今在该团队中,他主要致力于如何利用具有集成自动化功能的云技术。Herrin 在产品测试、云计算、快速配置工具、自动化和 Linux 方面有深厚的背景。通过自动化使用云是他对软件的真正激情所在,他认为这将会彻底改变我们未来产品的测试方式的一种技术。



2012 年 7 月 09 日

云应用程序继续变得越来越复杂,使得迅速提供云解决方案的任务变得更加困难,云解决方案包括:一次性生产级应用程序、部署程序包内的应用程序以及操作系统,甚至是一个复杂的虚拟应用程序模式(一个云组件/中间件服务和一个用于配置的策略)或虚拟系统模式(一个或多个实现部署拓扑的虚拟映像和应用程序)。

为了应对这个挑战,并探讨这种复杂性,本文演示了如何建立一个可行的、容易重复的协作式生命周期管理系统,该系统运行于 WebSphere Application Server 之上,并使用 DB2 作为数据库。文中使用了 IBM Workload Deployer 和 Rational® Team Concert CLM 特性。其最终结果是测试人员能够在每日的动态构建中再现一个拓扑,从而验证应用程序的缺陷和构建,执行冒烟测试 (smoke test),并支持其他测试活动。

让我们开始吧

IBM Workload Deployer (IWD) 是一个硬件设备,为用户提供了一个环境,使他们能够在私有云上部署中间件的可重复模式(或可重复解决方案)。

团队最初所遇到的问题包括,如何以一种可重复的节省时间的方式,克服建立一个运行于 WebSphere 之上的、使用 DB2 作为数据库供应者的可行 CLM 系统时所带来的复杂性挑战。这个问题的参数包括:

  • 测试人员必须能够在每日构建中动态再现该拓扑,以便进行缺陷验证、构建验证和冒烟测试(一般性地、粗粒度地查看整个系统是否正常工作)等。
  • 普通的测试人员需要花费大约 3 至 5 个工作日来安装和配置测试系统,然后才可以执行测试场景。

为了改变这种方式,我们在 IWD 脚本包的整个开发过程中都使用了 IWD 和集成的自动化功能(如 bash 和 Python 脚本,以及 WSAdmin),以提供了一个可重复的解决方案。团队使用以下步骤花了 60 分钟。


步骤 1:建立基础

本文中的解决方案模式拓扑采用一个现成的 Red Hat Enterprise Linux® 64-bit WebSphere 8.0.0.1 Network Deployment 虚拟映像(预安装了 WebSphere ND version 8.0.0.1 和 IBM Installation Manager 1.4.4 的虚拟映像),并且利用添加的脚本包,将 CLM 与一个现成的 RHEL 64-bit DB2 V9.7.4 虚拟映像一起安装、配置、部署到这个虚拟映像。图 1 说明了 IWD VSP 所映射到的 CLM 拓扑,这是本文讨论的 VSP 的可视化表示。

图 1. IWD VSP 所映射到的 CLM 拓扑
IWD VSP 所映射到的 CLM 拓扑

在本例中,CLM 在 WebSphere V8.0.0.1 服务器上运行,而 CLM 数据被存储在 DB2 V9.7.4 服务器上。

IWD 的优秀资产之一是,它能够在模式中建立不同虚拟映像之间的关系。现有的关系(如虚拟系统部件之间的箭头所示)使您能够在 CLM 数据和应用程序本身之间进行公开地通信,反过来这将导致面向多服务器设计的对开发人员更加友好的环境。 图 2 显示了 IWD 所建立的关系。

图 2. IWD 所建立的关系
IWD 所建立的关系

箭头显示,WebSphere 8.0.0.1 服务器识别出 DB29.7.4 服务器。因此,在两个服务器之间的通信并不是一场用户必须开拓的复杂战斗(从防火墙、代理服务器等障碍之间穿过)。

建立了解决方案的基础之后,接下来的步骤是为 CLM 应用程序部署准备 WebSphere 服务器和 DB2 服务器。


步骤 2:创建数据库 (JTS、CCM、QM、DW)

我们开发了一个脚本包,其中包括一个用于调用 db2admin (DB2 管理服务器的命令)的 Linux bash 脚本,以静默方式为每个应用程序创建 CLM 所需要的数据库。

父 bash 脚本:

#!/bin/sh
su - db2inst1 -c "sh /tmp/createDatabases.sh"

子 bash 脚本:

#!/bin/sh
db2 CREATE DATABASE jtsDB AUTOMATIC STORAGE YES ON '/db2fs' DBPATH ON '/db2fs' 
 USING CODESET UTF-8 TERRITORY US COLLATE USING SYSTEM PAGESIZE 16384

步骤 3:将预安装的 Installation Manager 更新到版本 1.5.2

CLM 4.0 对 Installation Manager 有一个依赖关系;它需要使用版本 1.5.2。我们使用包装成一个 IWD 脚本包的 Installation Manager 响应文件更新了现有版本。

示例 bash 脚本:

echo "Enter IM Directory"
cd /opt/IBM/InstallationManager/eclipse

echo "Launching IM 1.5.2 Update"
./IBMIM --launcher.ini silent-install.ini -input $IMFilePath/imUpdate152.xml
 -keyring $IMFilePath/im.keyring -accessRights admin -acceptLicense

示例 IM 更新响应文件模板:

<?xml version="1.0"?>
<agent-input clean="true" temporary="true">
<server>
<repository location="<IM repository>"/>
</server>
<install>
<offering features="agent_core,agent_jre" id="com.ibm.cic.agent"
 version="<IM BUILD Version>"/>
</install>
<profile id="IBM Installation Manager" installLocation="/opt/IBM/InstallationManager"
 kind="self"><data key="eclipseLocation" value="/opt/IBM/InstallationManager"/>
 </profile>
</agent-input>

步骤 4:在 WebSphere 服务器上安装 CLM

下一步是将 CLM 位安装到 WebSphere Application Server 上。在该场景中,用户需要能够获得 CLM 的特定构建。考虑到这一点,团队使用 Build ID 作为在安装 CLM 的脚本包中的一个规范参数。

在配置时,系统会将提示用户输入 Build ID,可以使用 bash 命令将此 ID 替换为 Installation Manager 生成的响应文件。

调用的 bash 脚本:

#!/bin/sh
. /etc/virtualimage.properties

echo "CLM Build to be installed: "$CLM_BUILD_ID

echo "Substitute CLM Build ID"

sed -i s%CLM_BUILD_ID_1%$CLM_BUILD_ID% /tmp/CLM/CLM.xml
sed -i s%CLM_BUILD_ID_2%$CLM_BUILD_ID% /tmp/CLM/CLM.xml

echo "Install CLM 4.x via Installation Manager"

cd /opt/IBM/InstallationManager/eclipse
./IBMIM --launcher.ini silent-install.ini -input /tmp/CLM/CLM.xml
 -keyring /tmp/CLM/im.keyring -acceptLicense -accessRights admin

Exit

步骤 5:配置 WebSphere 服务器/部署 CLM 应用程序

该模式解决方案的最后一步是用所需要的适当设置配置 WebSphere,然后才能将 CLM WAR 文件部署到服务器上。

为了让我们能够按自己的需要配置 WebSphere 服务器,团队创建了一个 Python 脚本,用于调用 AdminTask 对象:

print "-------Set Run as User to Root------"
#Set Run as Root
AdminConfig.modify('(cells/CloudBurstCell_1/nodes/CloudBurstNode_1/servers/
 server1|server.xml#ProcessExecution_1183122130078)', '[[runAsUser "root"]
 [runAsGroup ""] [runInProcessGroup "0"] [processPriority "20"] [umask "022"]]') 

print "-------Save Master Configuration-------"
#Save to Master Config
AdminConfig.save()

配置 WebSphere 之后,我们必须配置 teamserver.properties 文件,创建数据库表,并将 CLM WAR 文件部署到服务器上。

团队将 teamserver.properties 模板包括在配置脚本包中。通过使用 bash 字符串替换,用正确的主机名和数据库字符串来填充模板。

在替换字符串之后,将每个应用程序的 teamserver.properties 文件替换为自定义的模板。

从某个角度而言,这只是一个使用由 CLM 安装提供的工具就可以解决的问题。CLM 安装提供了一套存储库工具 (repotool),该工具可用于在之前已存在的数据库中创建表,从而消除用户在 Jazz Team Server (JTS) 安装向导中的另一个步骤。

Repotool 示例:

echo "------Run Repo Tools for JTS Tables------"
cd /opt/IBM/JazzTeamServer/server
./repotools-jts.sh
 -createTables teamserver.properties=
 "/opt/IBM/JazzTeamServer/server/conf/jts/teamserver.properties"
  logFile=repotools.log

最后,我们使用一个 Python 脚本将应用程序的 WAR 文件部署到 WebSphere 服务器。系统会将该脚本传递给 WebSphere Admin 程序 (wsadmin.sh),并在那里调用它来执行应用程序的部署。

应用程序部署的样例 Python 脚本:

def deployJazzApp(app_name):

    print "====== installing " + app_name + " Web Application on WAS ======\n"
    app_war= app_name + '.war'
    installed_appname = app_name + '_war'
    app_ctx = '/' + app_name
    appfile = properties.getProperty("CLM_HOME") + "/server/webapps/" + app_war

installcmd = ""

AdminApp.install(appfile, installcmd)
    AdminConfig.save()
    print "====== application " + app_name + " is installed on WAS =========\n"

print "====== Install completed. Please restart your WAS server.============\n"

部署应用程序后,重新启动 WebSphere 服务器,用户已准备好逐步完成 JTS 安装向导,并注册任何他们想要的 CLM 应用程序。图 3 显示了在流程结束时的模式视图。

图 3. 最终的模式视图
最终的模式视图

结束语

团队开发了该模式,使测试人员能够随时快速部署一个 CLM/WebSphere/DB2 拓扑,并提供了使他们能够拣选特定构建的其他灵活功能。不过,该设计已被证明比我们原来的设想更有用。它是任何 Rational 软件工程师都可以使用的一种技术,并且使用它的用户类型也扩展到系统验证测试人员以外的人员,包括:

  • 功能验证测试人员,测试最新的代码。
  • 构建验证测试人员,确认每日构建的稳定性。
  • 开发人员,创建用于测试与 CLM 的集成的产品。

CLM 模式解决方案只是 IWD 可以提供的功能之一,也展示了在开发流程各层次中的创新如何提高软件的质量。通过在 Rational 中实施该解决方案,团队设法使用户能够重新分配的宝贵时间资源,即他们在安装和配置 CLM 上所花费的时间;他们现在可以将大部分时间花费在开发和测试上。

IWD 使我们将测试系统化繁为简。

参考资料

学习

获得产品和技术

  • 参阅 IBM SmartCloud Enterprise 的可用 产品映像

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Cloud computing, Rational, WebSphere, Information Management
ArticleID=824582
ArticleTitle=配置复杂的云应用程序测试系统
publish-date=07092012