可交换的应用组件的制作方法

文档序号:6601787阅读:175来源:国知局
专利名称:可交换的应用组件的制作方法
技术领域
本申请涉及计算机硬件系统和软件系统,并且特别地,涉及对包括应用组件的系 统的测试。
背景技术
在集成测试期间,应用的多个组件一起进行测试。多个组件的每一个可能是由不 同的软件开发团队开发的。随着软件缺陷被修复,一个或多个组件的较新版本会在测试期 间替换这些组件之前的版本。任何组件的任何版本都可能包括缺陷,从而妨碍一个或多个其他组件的工作。任 何组件中的缺陷都可能导致应用在总体上不稳定或者不可用。因此,一个开发团队可能因 引入了组件的新版本而妨碍一个或多个其他开发团队对一个或多个其他组件的测试。如果组件的较新版本替换了该组件的较旧版本并且应用变得不太稳定,则可以重 新引入该组件的较旧版本。然而,重新引入组件的较旧版本可能是耗时的。在一个示例中, 为了重新引入较旧版本,整个应用可能需要关闭然后重新启动。在第二个示例中,组件的实 例可能要被停止、替换为该组件的较旧版本并重新启动。应用中包括的组件越多,在重新引 入组件的较旧版本时,该应用可能不可用的时间越长。停机时间包括这样的时段,在该时段 期间,应用不可用于测试,或者该应用不稳定到足以显著地妨碍测试。当应用的总计停机时 间较长时,测试活动可能受到较大限制。

发明内容
提供了 一种方法,其可以限制应用在该应用的集成测试期间的停机时间。重定向 器可以配置用于从应用接收向组件的地址传输的第一消息,并且将第一消息向该组件的第 一实例转发,其中该应用包括该组件。响应于接收克隆命令,可以生成该组件的第二实例。 第一实例和第二实例可以并发地监听传入消息。响应于接收第一切换命令,可以将重定向 器重新配置用于将在所述地址处接收的所有第二消息向所述组件的第二实例而非第一实 例转发,其中所述第二消息在所述第一消息之后接收。响应于接收第二切换命令,可以将重 定向器重新配置用于将所有第三消息向所述第一实例而非第二实例转发,其中所述第三消 息在所述第一消息和第二消息之后接收。可以提供一种系统,其包括存储器和处理器,其中存储器中的计算机代码可由处 理器来执行,以实现所提供的方法。还可以提供一种包括指令的机器可读介质,当所述指令 由数据处理系统执行时,使得所述数据处理系统执行所提供的方法。通过参考附图的下文描述,本发明的其他目的和优点将是易见的,其中附图中示 出了本发明的优选实施方式。


通过参考下文的描述和附图可以更好地理解本发明。图中的组件不一定是按照比例绘制的,而是将强调的重点放在说明本发明的原理上。而且,在附图中,贯穿不同的视图, 类似的数字指示相应的部分。图1示出了用以限制应用在集成测试期间的停机时间的系统的第一示例;图2示出了用以限制应用在集成测试期间的停机时间的系统的第二示例;图3示出了用以限制应用在集成测试期间的停机时间的系统的第三示例;图4示出了可以实现用以限制应用停机时间的系统的一个处理系统的硬件示意 图的示例;图5示出了该系统的逻辑的示例流程图;图6示出了克隆器的逻辑的示例流程图;以及图7示出了重定向器的逻辑的示例流程图。
具体实施例方式在一个示例中,业务应用可以包括计费组件和客户关系管理(CRM)组件。应用可 以使用简单对象访问协议(SOAP)来与计费组件和CRM组件通信。为了向组件之一发送SOAP 消息,业务应用可以将SOAP消息寻址到与一个相应组件的实例相对应的地址。每个相应组 件的地址可以包括网络地址和端口号。在集成测试期间,可以在至少一个组件与应用的其他部分之间插入重定向器。应 用可以继续向组件的地址发送消息。重定向器在该地址处接收消息,并且向该组件的多个 实例中的一个选定实例重新传输该消息。多个实例中的每一个可以是在备选地址处可到达 的。重定向器可以使用相应的备选地址来向多个实例中的一个选定实例转发消息。重定向 器可以接收切换命令,其指示重定向器应当将消息重定向至组件的多个实例中的一个已标 识实例。因为每个实例在一个相应备选地址处并发地进行监听,因此改变实例中选定的一 个可以快速地完成。在一个示例中,还可以引入克隆器,其根据组件的已标识版本来创建该 组件的任意一个或多个实例。克隆器可以配置用于接收克隆命令,该克隆命令标识要创建 的组件的实例。组件的第一版本可以是稳定版本。克隆器可以接收命令以创建与组件的第一版本 对应的组件的第一实例。应用可以使用组件的第一实例(其是稳定版本)进行测试。可以 开发组件的第二版本。克隆器可以用来创建与该第二版本对应的组件的第二实例,同时第 一实例继续对接收自应用其余部分的消息进行响应。为了测试第二版本,重定向器可以接 收第一切换命令,以将消息向组件的第二实例而非第一实例转发。如果组件的第二版本没 有第一版本稳定,则重定向器可以接收第二切换命令,以恢复将消息向第一实例而非第二 实例转发。然而,请注意,重定向器和克隆器可以不考虑任何特定应用组件被感知到的或测 量到的稳定性或不稳定性而进行操作。应用测试人员可以使用重定向器和克隆器来有意地 接通或者断开任何应用组件的任何版本,或者甚至使用功能上完全不同的组件来代表已有 组件。下文描述的系统和方法的一个技术优点在于切换到新组件版本以及切换回之前 组件版本可以快速地进行,从而得到测试期间的最小应用停机时间。当集成测试完成时可 以移除重定向器和克隆器,而无需重新配置系统的其余部分。将在测试完成之后使用的组件版本的实例可以在与重定向器监听消息的相同地址处监听消息。由此,下文描述的系统 和方法的另一技术优点在于集成测试期间所测试的代码路径与测试完成之后的代码路径 几乎相同。又一技术优点在于可以在不同机器上容易地测试组件。例如,系统测试机器、 集成测试机器和试制(pre-production)机器的每个都可以包括组件的相应实例。如果任 何实例不可用,则可以快速选择其他实例中的任何一个,而无需重新配置调用系统。图1示出了用以限制应用110在集成测试期间的停机时间的系统100的第一示 例。系统100可以包括应用110和组件测试器120。系统100可以包括更多、更少或者不同 的元件。例如,系统100还可以包括源控制系统130。在另一示例中,该系统可以包括应用 110,而应用110可以包括组件测试器120。应用110可以包括任意软件程序,其包括应用110的其余部分使用远程过程调用 消息进行访问的一个或多个组件140。应用110的示例包括企业资源规划(ERP)程序、客户 关系管理(CRM)程序、记账程序、税务程序、企业资源规划程序以及操作系统。在一个示例 中,组件140可以包括计费组件和客户关系管理组件。在其他示例中,应用110可以包括更 多、更少或者不同的元件。例如,应用110可以附加地包括组件间通信层150。在不存在组 件测试器120的情况下,组件间通信层150可以传输和接收去往以及来自于应用110的组 件140的消息。在一个示例中,组件间通信层150可以包括向组件140发送消息以便执行 一个或多个业务过程的工作流逻辑。由任何组件140实现的逻辑可以对诸如远程过程调用(RPC)等任意类型的通信做 出响应。例如,组件可以是使用一个或多个RPC协议可访问的web服务或者任何其他软件 程序。RPC是一种过程间通信技术,其促进计算机程序传输消息,以使得该消息中所标识的 编程子例程在诸如共享网络上的另一计算机上的另一地址空间中执行。在一个示例中,RPC 消息可以使子例程在与消息发送者相同的计算机上执行。RPC协议的示例包括S0AP、JaVa 远程方法调用(冊1)、分布式组件对象模型(DC0M)、公共对象请求代理架构(C0RBA)以及微 软(TM). NET。组件测试器120可以是任何软件模块,其包括重定向器170以测试一个或多个组 件140。重定向器170对RPC消息源(诸如组件间通信层150)与任何给定组件的多个实 例172中选定的一个实例之间的通信进行路由。在一个示例中,重定向器170可以接收向 某个地址发送的RPC消息,继而将该RPC消息向多个备选地址中选定的一个地址转发。重 定向器170可以接收针对向选定的一个备选地址传输的消息的响应,并且将该响应传输回 最初向重定向器170传送该RPC消息的源。重定向器170可以接收切换命令,其指示组件的多个实例172中的哪一个是多个 实例172中选定的一个。例如,重定向器170可以接收控制多个备选地址中的哪一个是多 个备选地址中选定的一个地址的命令。例如,重定向器170可以接收切换命令,其指示组件 的多个实例172中的哪一个应当接收通过通信层150向该组件发送的消息。重定向器170 所提供的一个技术优点在于其在组件实例之间快速地切换,从而支持具有最小化停机时 间的应用调试。在一个示例中,在接收用于切换地址的命令之后,重定向器170可以在两秒 内从一个备选地址向另一个切换。因此,本发明没有为了替换组件而停止和重新启动将要 替换的组件的实例或者整个应用,而是促进组件在运行中被重新配置以用于测试。在一个示例中,重定向器170可以使用UNIX rinetd工具、相应的配置文件176以
7及外壳脚本178来实现。UNIX rinetd工具是一种因特网重定向服务器。配置文件176包 括重定向条目,其指示rinetd工具将监听哪个或哪些地址,以及rinetd工具将把消息重 定向到哪个或哪些地址。下文表1是配置文件176的重定向条目的一个示例。源地址指 示rinetd工具要监听哪个地址,而目的地址指示rinetd工具将把消息重定向到哪个地址。 当被执行时,外壳脚本178可以停止当前执行的rinetd过程、修改配置文件以及重新启动 rinetd过程。外壳脚本178可以修改配置文件176中的重定向条目,以指示rinetd工具向 组件的预定实例转发消息。接收切换命令例如可以包括运行外壳脚本178,以修改配置文 件176中的重定向条目。在另一示例中,接收切换命令可以包括从用户输入设备接收选择 信号。选择信号可以指示用户选择了某个用户接口元素以发起向组件的预定实例的切换。表1 地址可以包括适于将消息导引至目的地的任何信息。例如,地址可以包括诸如网 际协议(IP)地址的网络地址以及端口号。除重定向器170之外,组件测试器120还可以包括克隆器180。克隆器180可以 响应于接收克隆命令来创建一个或多个组件140的实例。克隆器180可以基于克隆器180 从源控制系统130获得的软件主实例来创建实例。在另一示例中,克隆器180可以直接从 源控制系统130创建实例。组件140之一的实例是在进程和/或线程中执行的、在已配置 地址处监听消息的组件拷贝。软件主实例可以是包括组件的已编译二进制文件的目录。例 如,该目录可以包括用于计费组件的动态链接库。在一个示例中,克隆器180可以包括外壳脚本,其接受指示要创建实例的参数。例 如,参数可以是指示克隆器180要从软件主实例创建n个实例中哪个实例的编号。在另一 示例中,除了编号参数之外,外壳脚本还可以接受字符串参数,其中该字符串参数指示从其 获得组件的已编译二进制文件的源控制标签。在备选示例中,克隆器180可以包括多个外 壳脚本,其中外壳脚本中的每个对应于该外壳脚本所创建的实例172中的相应一个。如果 主软件实例中所包括的已编译二进制文件被替换,则运行与已有实例之一相对应的外壳脚 本将会利用主软件实例中所包括的二进制文件来更新该已有实例。在又一示例中,克隆器 180可以不包括任何脚本,而是代之以包括以另一编程语言编写的计算机代码。下文表2提 供了与示例172之一相对应的外壳脚本的一个示例。表2源控制系统130可以是任何版本控制系统,用以管理相同信息单元(诸如计算机 代码)的多个版本。当应用110的组件的版本的功能、配置或者二者不同时,组件的一个版 本不同于该组件的另一版本。在图1中的系统100的操作期间,可以在组件间通信层150与组件140之一的实例172之间插入组件测试器120。例如,组件间通信层150可以配置用于向第一地址传输指 向计费组件的所有消息。组件测试器120中的重定向器170可以配置用于在第一地址进行 监听。重定向器170可以进一步配置用于将在第一地址处接收的RPC消息向计费组件的第 一实例的备选地址路由。计费组件的第一实例可以是计费组件的稳定版本。
例如,在测试期间,可以在计费组件的稳定版本中标识软件缺陷。软件程序员可以 在源控制系统130中尝试修正软件缺陷。软件程序员可以构建计费组件的测试版本,其包 括软件缺陷的补丁。开发者可以向克隆器180发出克隆命令,以创建计费组件的、与打过补 丁的测试版本相对应的第二实例。计费组件的第二实例可以在与第一实例监听RPC消息的 备选地址不同的备选地址处监听RPC消息。例如,该备选地址可以包括目前未分配的端口。 在一个示例中,该端口可以动态确定。在另一示例中,该端口可以由软件程序员来选择。软 件程序员可以向重定向器170发出切换命令,以便从向计费组件的第一实例转发RPC消息 切换为向第二实例转发RPC消息。软件程序员可以在任何时刻向重定向器170发出切换命 令,以便切换回向第一实例转发消息。作为一个示例,如果切换至计费组件的第二实例将不 期望量的不稳定性引入了应用110,则软件程序员可以恢复到之前的实例。然而,只要期望(例如直到做出进一步更新)或者只要第二实例稳定,便可以使用 第二实例。当测试完成时,可以移除组件测试器120,并且计费组件的单个实例可以在第一 地址处进行监听。例如,杀死重定向器170在其中运行的进程,并且移除配置文件和脚本。 组件的实例172之间的切换可以是快速的,并且几乎消除了停机时间;否则,停止和启动应 用110或者启动和停止组件的单个实例将会导致停机时间。下文表3提供了在用以限制应用110的停机时间的系统100的一个示例中的操作 期间所测量到的平均值。表3 基于表3中的持续时间,在不使用组件测试器120的情况下,应用110的平均停机 时间为(应用的平均总计重新启动时间)*{平均应用重新启动+[(测试中一个组件每天 的平均故障+每天针对每个组件所应用的平均补丁)* (应用中的平均组件数目)]} = (270 秒)*{5+[(3+2)*(8)]}=约3.3小时。然而,在使用组件测试器120的情况下,应用110的 平均停机时间为(应用的平均总计重新启动时间)*(平均应用重新启动)+ [(从一个实例 向另一实例切换的平均时间)*(测试中一个组件每天的平均故障+每天针对每个组件所应 用的平均补丁)*(应用中组件的平均数目)]=(270秒)*(5) + [(2秒)*(3+2)*(8)] =22 分钟+80秒=约23分钟。因此,系统100可以充分限制应用110在测试期间的停机时间。在另一示例中,组件的不同实例可以包括该组件经过不同配置的相同版本。例如, 组件的实例172可以包括处于调试模式的第一实例182以及处于部署模式的第二实例184。 重定向器170可以接收在两个实例172之间向后和向前切换的切换命令。在把实例172所 生成信息的记入日志方面,调试模式不同于部署模式。调试模式可以具有相对于部署模式 而言较高的日志记入水平,并且产生详细的日志记入信息186。相反,部署模式可以产生较 少的或者不产生日志记入信息188,但是比调试模式更好地执行。当研究软件缺陷时,可以 向重定向器170发送切换命令,以向调试模式的第一实例182而非部署模式的第二实例184 切换。当不再期望详细的日志记入信息时,可以向重定向器170发送另一切换命令,以向部 署模式的第二实例184切换。在一个示例中,当集成测试开始时,可以选择调试模式的第一实例182,因为在测 试开始期间可能频繁地遇到软件缺陷。之后在集成测试中,可以选择部署模式的第二实例 184,因为与开始时相比软件缺陷会较不频繁地出现,以及因为较好地执行实例将有助于测 试其他组件。然而,如果之后在测试周期遇到软件缺陷,可以选择调试模式的第一实例182 来促进分离出软件缺陷的原因。在又一示例中,组件的一个实例可以与组件的另一实例运行在不同的机器上,或 者与应用Iio的其余部分运行在不同的机器上。例如,如果组件的实例172之一由于软件 缺陷而偶然消耗了大量处理能力,则可以通过向重定向器170发送切换命令来选择在与应 用110的其余部分不同设备上执行的组件实例。在另一示例中,组件的所有实例172可以 在与组件测试器120在其上执行的设备不同的设备上执行。在系统100的一个示例实现中,可以通过检查由选定实例生成的日志文件来确定 当前选择的实例。备选地或附加地,可以通过检查进程信息来确定当前选择的实例。例如, 在Unix上,命令“ps-ef|gr印rinet”可以在显示器上输出“tibco 366 28795 0 Mar 14 0:56/usr/sbin/rinetd —conf-file /FS/tibco/RinetdConfigs/rinetdl. conf,,。文件‘‘/ FS/tibco/RinetdConfigs/rinetdl. conf ”可以包含针对第一实例182的配置信息,并且不 同的配置文件可以对应于第二实例184。因此,可以确定选择的实例是第一实例182。图2示出了用以限制应用在集成测试期间的停机时间的系统100的第二示例。系 统100可以包括应用110、源控制系统130以及已编译组件210。应用110可以包括与已编 译组件210相对应的组件212、克隆器180以及重定向器170。组件212可以包括组件212 的一个或多个实例172。系统100还可以包括附加系统220,其配置用于访问组件212。附 加系统220可以包括例如web门户230、CRM模块232、经销商门户234、记账系统236、旧有 系统238以及制造系统240。在系统100的操作期间,软件程序员可以使用源控制系统130对组件140之一的 源代码进行修改。可以使用例如编译器和链接器从源控制系统130生成已编译组件210。 克隆器180可以接收命令以创建组件212的实例172中的任何一个。例如,克隆器180可 以包括多个外壳脚本,每个外壳脚本对应于实例172之一。在被执行时,外壳脚本可以根据 已编译组件210创建第一实例250,其处于调试模式并被启动,以在预定端口 260处监听消 息。例如,预定端口可以是图2中所示的端口 7、8、9、10、11和12。外壳脚本中的第二外壳 脚本可以根据已编译组件210创建第二实例252,其处于部署模式并被启动,以在不同的预 定端口 270处监听消息。例如,不同的预定端口可以是图2中所示的端口 13、14、15、16、17 和18。在另一示例中,克隆器180可以包括与组件212的N个不同实例172相对应的数目 为N的脚本,而不是只有两个脚本和两个实例。在又一示例中,克隆器180可以包括如下外 壳脚本,其接收用以标识要创建实例的一个或多个参数,以及用以控制所标识实例的配置 的参数。例如,这些参数可以指示实例是否应当处于调试模式或者部署模式、实例应当监听 什么端口 260和270或者用来控制实例配置的任何其他参数。克隆器180在监听命令的进 程或者线程中执行,并且响应于接收这些命令而创建一个或多个实例172。重定向器170可以监听通过网络接口 242从一个或多个附加系统220接收的消 息。重定向器170可以在预定端口 280(诸如图2中所示的端口 1、2、3、4、5和6)处监听消 息。在一个示例中,重定向器170可以接收切换命令,以便向组件212的实例172中选定的 一个路由消息。此后,重定向器170可以将通过端口 280中任何一个接收的消息向实例172 中选定的一个的端口 260或270中的相应端口路由。例如,在图2中,在重定向器170的端 口 280接收的消息向组件212的第二实例252的所确定端口 270转发。例如,在重定向器 170的端口 1接收的消息可以向第二实例252的端口 13转发,而在重定向器170的端口 6 接收的消息可以向第二实例252的端口 18转发。如果重定向器170接收将选定实例从第二实例252向组件212的第一实例251切 换的切换命令,则此后重定向器170可以将通过重定向器170的任何一个端口 280接收的 消息向第一实例250的所确定端口 260中包括的相应端口转发。例如,在重定向器170的 端口 1接收的消息可以向第一实例251的端口 7转发。 备选地或附加地,重定向器170可以配置用于将在重定向器170的端口 280之一 接收的任何消息向所标识实例的所标识端口转发。例如,在这种配置之前,重定向器170可 以配置用于将通过重定向器170的端口 280接收的所有消息向组件212的第二实例252 (其 处于部署模式)的相应端口 270路由。重定向器170继而可以配置用于将通过端口 280之一接收的消息向组件212的第一实例250(其可以处于调试模式)的端口 260之一路由。 根据消息通过哪个端口被接收来向组件212的不同实例转发消息,这便于当处理从附加系 统220中确定的一个接收的消息、而利用组件212的更好的执行或者更稳定的实例来处理 从其他附加系统220接收的消息时的详细日志记入。用于限制应用110的停机时间的系统100不仅可以用于集成测试。例如,系统100 可以用来测试应用于应用110的产品版本的补丁。
图3示出了用于限制应用110在集成测试期间的停机时间的系统100的第三示 例。在图3所示的示例中,应用110可以包括多个组件测试器310、组件140以及组件间通 信层150。多个组件测试器310独立地标为组件测试器1和组件测试器2。组件140被独 立地标为组件A和组件B。多个组件测试器310中的每一个对应于组件140之一。例如,组 件测试器1对应于组件A。多个组件测试器310中的每一个从组件间通信层150接收寻址 到组件140中相应一个的消息。多个组件测试器310中的每一个配置用于将针对组件140 中相应一个而接收的消息向组件的实例172中相应的一个选定实例转发。例如,图3中被 标为组件测试器1的组件测试器120可以将寻址到被标为组件A的组件的消息向组件A的 实例172中选定的一个转发。切换命令可以向组件测试器310中相应的一个发送,以切换 用于一个相应组件140的一个选定实例172。类似地,可以向组件测试器310中相应的一个 发送克隆命令,以针对组件140的相应一个来创建实例172之一。在备选示例中,一个组件测试器120可以处理针对多个组件140而非仅一个组件 的切换。例如,组件测试器120可以监听寻址到两个或更多组件140中任何一个的消息。 重定向器170可以包括与组件140中相应的每一个对应的配置文件176,其确定用于组件 140中相应的每一个而接收的消息的转发规则。重定向器170可以接收寻址到组件140之 一的源地址的消息。重定向器170可以基于源地址来确定目的地址,并且向该目的地址转 发消息。重定向器170可以接收包括组件标识符和实例标识符的切换命令。组件标识符可 以指示将要重新配置组件140中的哪一个。实例标识符可以指示重定向器170向组件的实 例172中的哪个转发消息。克隆命令也可以包括组件标识符和实例标识符,其中组件标识 符指示哪个组件140要具有新实例,而实例标识符标识要创建的实例。图4示出了处理系统400以及可以实现用于限制应用110停机时间的系统100的 支持实体(诸如网络402和附加系统220)的硬件示意图的示例。处理系统400包括处理器 410、存储器420和网络接口 430。存储器420保持实现上文描述逻辑的程序和过程以供处 理器410执行。作为示例,存储器420可以存储实现组件测试器120、一个或多个组件140 的实例172或者应用110任何其他部分的程序逻辑。系统400可以接收消息440,诸如通过 网络接口 430从附加系统220接收RPC消息,其中附加系统220通过网络402来与网络接 口 430通信。系统100和400可以通过多种不同方式来实现。例如,尽管某些特征被示为存储 在计算机可读存储器中(例如,作为实现为计算机可执行指令的逻辑,或者作为存储器中 的数据结构),但是系统的全部或者部分及其逻辑和数据结构可以在其他机器可读介质上 存储、跨其间分布或者从其读取。介质可以包括硬盘、软盘、⑶-ROM、信号(诸如从网络接收 的信号或者通过跨网络而传送的多个分组接收到的信号)。可以利用附加的、不同的或者更少的实体来实现系统100和400。作为一个示例,处理器410可以实现为微处理器、微控制器、DSP、专用集成电路(ASIC)、离散逻辑或者其他 类型的电路或者逻辑的组合。作为又一示例,存储器420可以是非易失性和/或易失性存 储器,诸如随机访问存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、 闪存、目前已知或者稍后开发的任何其他类型的存储器或其任意组合。存储器420可以包 括光的、磁的(硬驱动)或者任何其他形式的数据存储设备。系统100和400的处理能力可以在多个实体之间分布,诸如在多个处理器和存储 器之间分布,可选地包括多个分布式处理系统。参数、数据库以及其他数据结构可以独立地 存储和管理,可以并入单个存储器或者数据库,可以在逻辑上和物理上以多种不同方式来 组织,并且可以利用不同类型的数据结构(诸如链接列表、散列表或者隐式存储机制)来实 现。诸如程序或者电路的逻辑可以在多个程序之间合并或者分割,跨若干存储器和处理器 而分布,并且可以在诸如共享库(例如,动态链接库(DLL))的库中实现。DLL例如可以存储 制定中间映射或者实现对映射的搜索的代码。作为另一示例,DLL本身可以提供系统、工具 或二者的全部或某些功能。处理器410可以与存储器420以及网络接口 430通信。在一个示例中,处理器410 还可以与诸如显示器等附加组件通信。处理器410可以是通用处理器、中央处理单元、服务 器、专用集成电路(ASIC)、数据信号处理器、现场可编程门阵列(FPGA)、数字电路、模拟电 路或其组合。处理器410可以是可操作以执行存储器420或者其他存储器中所包含的计算机可 执行指令或者计算机代码以执行组件测试器120的特征的一个或多个设备。计算机代码可 以包括可由处理器410执行的指令。计算机代码可以包括嵌入式逻辑。计算机代码可以 通过现在已知或者以后开发的任何计算机语言来编写,诸如C++、C#、Java, Pascal、Visual Basic、Perl、超文本标记语言(HTML)、JavaScript、汇编语言、外壳脚本或其任意组合。计 算机代码可以包括源代码和/或已编译代码。网络接口 430可以包括促进应用110通过网络402进行的通信的硬件、软件或者 硬件和软件的组合。网络接口 430提供对网络的物理接入,并且可以通过媒介接入控制 (MAC)地址的使用来提供低层寻址系统。图5示出了系统100的逻辑的示例流程图。该逻辑可以包括附加的、不同的或者 更少的操作。操作可以按照不同于图5所示的顺序来执行。提供重定向器170,其配置用于接收向应用中所包括的组件212的地址传输的消 息(502)。重定向器170从应用110的其余部分接收消息。重定向器170向组件212的第 一实例250转发消息。当被指示时,克隆器180生成组件的第二实例(504)。在生成第二实例252之后, 第一实例250和第二实例252可以同时监听传入消息。然而,每个实例可被配置为在不同 的地址上进行监听。当被指示时,重定向器170修改配置文件176,以便将重定向器170重新配置为将 在所述地址接收的消息向组件的第二实例而非第一实例转发(506)。
当被指示时,重定向器170修改配置文件176,以便将重定向器170重新配置为将 在所述地址接收的消息向第一实例而非第二实例转发(508)。图6示出了克隆器180的逻辑的示例流程图。该逻辑可以包括附加的、不同的或者更少的操作。操作可以按照不同于图6所示的顺序来执行。克隆器180可以检查以查看是否接收到克隆命令(610)。如果没有接收到克隆命 令,克隆器180可以重复,直到接收到克隆命令。备选地,克隆器180可以是一个或多个外 壳脚本,并且当一个或多个该脚本被执行时接收克隆命令。当接收到克隆器命令时,克隆器180可以将已编译二进制文件替换或添加到与要 克隆的实例相对应的目录(620)。已编译二进制文件可以包括在根据源控制系统130而生 成的已编译组件210中。
当接收到克隆器命令时,克隆器180可以附加地设置用于组件实例的配置文件 (630)。在一个示例中,克隆器180可以附加地修改重定向器170中所包括的配置文件176, 使得在重定向器处理器重新启动的情况下,重定向器170将读取向所克隆实例的切换。当接收到克隆器命令时,克隆器180还可以在消息框架中部署消息(640)。消息框 架可以是支持使用RPC来发送和接收去往和来自组件的消息的任何框架。例如,消息框架 可以包括SOAP框架,诸如.NET、TIBCO(TM)或者Apache Axis。图7示出了重定向器170的逻辑的示例流程图。该逻辑可以包括附加的、不同的 或者更少的操作。操作可以按照不同于图7所示的顺序来执行。重定向器170可以检查以查看是否接收到切换命令(710)。如果没有接收到切换 命令,则操作可以继续检查以查看是否接收到切换命令(710)。备选地,重定向器170可以 是一个或多个外壳脚本,并且当一个或多个该脚本被执行时接收切换命令。当接收到切换命令时,重定向器170可以停止重定向器过程(720)。在一个示例 中,重定向器170还可以进一步更新配置文件176,以便将重定向器170配置为向该实例转 发消息(730)。在第二示例中,克隆器180可以更新配置文件176,使得只要用于组件的重 定向器进程被重新启动,则最后被克隆的实例是重定向器170所切换到的实例。当接收到切换命令时,重定向器170可以附加地启动重定向器过程(740),使得新 近更新的配置文件176被用来确定哪个实例应当接收针对组件的传入消息。在一个示例中,系统可以包括存储器420和处理器410。处理器410可以与存储 器420通信。存储器可以包括计算机代码,当其由处理器执行时使得该系统提供重定向器 170,该重定向器170配置用于从应用110接收寻址到组件地址的第一消息。应用110可以 包括组件。重定向器还可以配置用于向组件的第一实例转发第一消息。计算机代码在被执 行时可以接收克隆命令,并且响应于克隆命令的接收而生成组件的第二实例。第一实例和 第二实例可以配置用于并发地监听传入消息。计算机代码在被执行时可以接收第一切换命令,并且响应于该第一切换命令的接 收,而将重定向器重新配置为将在所述地址接收的所有第二消息向组件的第二实例而非第 一实例转发。第二消息在第一消息之后被接收。计算机代码在被执行时可以接收第二切换命令,并且响应于该第二切换命令的接 收,而将重定向器重新配置为将所有第三消息向第一实例而非第二实例转发。第三消息在 第一消息和第二消息之后被接收。在一个示例中,第二实例可以包括与第一实例不同的组件版本。备选地或附加地, 组件的第二实例可以配置为具有与组件的第一实例不同的日志记入水平。在一个示例中,系统100还可以包括网络402和计算机,其中处理器通过该网络来与该计算机通信。组件的第二实例可以配置用于在该计算机上执行。第一消息、第二消息以及第三消息可以包括简单对象访问协议(SOAP)消息。计算机代码在被执行时还可以使系统响应于第一切换命令的接收来修改重定向 器的配置文件中的重定向条目。组件的第一实例可以配置用于在不同于该组件的地址的第二地址处监听传入的 远程过程调用消息。重定向器可以配置用于向第二地址处的组件的第一实例转发第一消 肩、ο在一个示例中,计算机可读介质可以编码有计算机可执行指令。该计算机可执 行 指令可由处理器执行。该计算机可读介质可以包括可执行以提供重定向器170的指令,该重定向器170 配置用于从应用101接收寻址到组件地址的第一消息,以及向组件的第一实例转发第一消 息。应用110包括该组件。该计算机可读介质还可以包括可执行以接收克隆命令以及响应于克隆命令的接 收来生成组件的第二实例的指令。第一实例和第二实例可以配置为并发地监听传入消息。该计算机可读介质还可以包括可操作以接收第一切换命令以响应于该第一切换 命令的接收而将重定向器重新配置为将在所述地址接收的所有第二消息向组件的第二实 例而非第一实例转发的指令。第二消息在第一消息之后被接收。该计算机可读介质还可以包括可执行以接收第二切换命令以及响应于该第二切 换命令的接收而将重定向器重新配置为将在所述地址接收的所有第三消息向第一实例而 非第二实例转发的指令。第三消息在第一消息和第二消息之后被接收。在一个示例中,可执行以生成组件的第二实例的指令还可以执行以便根据不同于 第一实例的组件版本来生成第二实例。在另一示例中,可执行以生成组件的第二实例的指 令还可执行以将组件的第二实例配置为具有与组件的第一实例不同的日志记入水平。第一消息、第二消息和第三消息可以包括简单对象访问协议(SOAP)消息。地址可 以是第一地址,其中组件的第一实例配置用于在第二地址监听传入的远程过程调用消息。 重定向器可以配置用于向第二地址处的组件的第一实例转发第一消息。在一个示例中,第一地址包括多个端口。例如,第一地址可以在一个消息中包括一 个端口,而在另一消息中包括不同的端口。不论所描述的特定实现,所有讨论本质上都是示例性的而非限制性的。例如,尽管 将实现的选定方面、特征或者组件描述为存储在存储器中,但是符合本发明的全部或者部 分系统和方法可以在其他计算机可读介质上存储、跨其间分布或是从其读取,这些其他计 算机可读介质例如辅助存储设备,诸如硬盘、软盘和CD-ROM ;从网络接收的信号;或者目前 已知或是以后开发的其他形式的ROM或RAM。而且,各种模块和屏幕显示功能仅仅是此类功 能的一个示例,并且涵盖类似功能的任何其他配置都是可行的。此外,尽管描述了本发明的特定组件,但是符合本发明的方法、系统和产品可以 包括附加的或不同的组件。例如,处理器可以实现为微处理器、微控制器、专用集成电路 (ASIC)、离散逻辑或其他类型的电路或逻辑的组合。类似地,存储器可以是DRAM、SRAM闪存 或者任何其他类型的存储器。标志、数据、数据库、表、条目和其他数据结构可以独立地存储 和管理,可以并入单个存储器或数据库,可以是分布式的,或者可以在逻辑上和物理上以多种不同方式来组织。程序可以是单个程序的部分、独立程序或者跨多个存储器和处理器而 分布。用于实现上文所讨论的过程、方法和/或技术的相应逻辑、软件或者指令可以在 计算机可读介质或者存储器或者其他有形介质(诸如高速缓存、缓冲器、RAM、可移除介质、 硬驱动、其他计算机可读存储介质或者任何其他有形介质或其组合)上提供。有形介质包 括各种类型的易失性和非易失性存储介质。在附图中示出以及在此描述的功能、动作或任 务可以响应于存储在计算机可读介质之中或之上的一个或多个逻辑集或指令集而执行。功 能、动作或者任务独立于特定类型的指令集、存储介质、处理器或者处理策略,并且可由软 件、硬件、集成电路、固件、微码等执行,或单机操作或结合操作。同样,处理策略可以包括多 处理、多任务、并行处理等 。在一个实现中,指令存储在可拆卸介质设备上,以便由本地系统 或远程系统来读取。在其他实施方式中,逻辑或指令存储在远程位置中,以便通过计算机网 络或者电话线路来传送。在又一实施方式中,逻辑或指令存储在给定计算机、中央处理单元 (“CPU”)、图形处理单元(“GPU”)或系统中。尽管已经描述了本发明的各种实施方式,但是对于本领域技术人员清楚的是,在 本发明的范围内,还有很多实施方式或者实现是可行的。
权利要求
一种用以限制应用在所述应用的集成测试期间的停机时间的方法,所述方法包括提供重定向器,其配置用于从所述应用接收向组件的地址传输的第一消息,以及将所述第一消息向所述组件的第一实例转发,所述应用包括所述组件;响应于接收克隆命令,生成所述组件的第二实例,所述第一实例和所述第二实例并发地监听传入消息;响应于接收第一切换命令,将所述重定向器重新配置用于将在所述地址处接收的所有第二消息向所述组件的所述第二实例而非所述第一实例转发,所述第二消息在所述第一消息之后接收;以及响应于接收第二切换命令,将所述重定向器重新配置用于将所有第三消息向所述第一实例而非所述第二实例转发,所述第三消息在所述第一消息和第二消息之后接收。
2.如权利要求1所述的方法,其中生成所述组件的所述第二实例包括根据所述组件 的、与所述第一实例不同的版本来生成所述第二实例。
3.如权利要求1所述的方法,进一步包括所述应用的除所述组件之外的所有部分经 由远程过程调用消息来与所述组件通信。
4.如权利要求1所述的方法,其中所述克隆命令是第一克隆命令,所述方法进一步包 括响应于接收第二克隆命令而生成所述组件的第三实例,其中所述第一实例、所述第二实 例和所述第三实例并发地监听传入消息。
5.如权利要求1所述的方法,其中所述组件的所述地址是第一地址,所述方法进一步 包括响应于接收第三切换命令,将所述重定向器重新配置用于将寻址到所述第一地址的 所有第四消息向所述第一实例转发,以及将寻址到所述第二地址的所有第五消息向所述第 二实例转发,其中所述第四消息在所述第一消息、所述第二消息和所述第三消息之后,并且 其中所述第五消息在所述第一消息、所述第二消息、所述第三消息和所述第四消息之后。
6.如权利要求1所述的方法,进一步包括响应于所述应用的所述集成测试的完成,将所述重定向器重新配置用于停止在所述地 址接收任何消息;以及响应于所述应用的所述集成测试的完成,将所述组件的所述第一实例重新配置用于在 所述地址处进行监听。
7.如权利要求1所述的方法,进一步包括将多个组件测试器中相应的每一个配置用 于将寻址到多个组件中相应一个的消息向所述组件的所述相应一个的一个选定实例转发。
8.一种系统,包括处理器,其配置用于提供重定向器,其配置用于从应用接收寻址到组件的地址的第一消息,以及将所述第 一消息向所述组件的第一实例转发,其中所述应用包括所述组件;接收克隆命令;响应于所述克隆命令的接收,生成所述组件的第二实例,其中所述第一实例和所述第 二实例配置用于并发地监听传入消息;接收第一切换命令;响应于所述第一切换命令的接收,将所述重定向器重新配置用于将在所述地址处接收 的所有第二消息向所述组件的所述第二实例而非所述第一实例转发,其中所述第二消息在所述第一消息之后接收; 接收第二切换命令;以及响应于所述第二切换命令的接收,将所述重定向器重新配置用于将所有第三消息向所 述第一实例而非所述第二实例转发,其中所述第三消息在所述第一消息和所述第二消息之 后接收。
9.如权利要求8所述的系统,其中所述第二实例包括所述组件的、与所述第一实例不 同的版本。
10.如权利要求8所述的系统,进一步包括网络和计算机,其中所述组件的所述第二 实例配置用于在所述计算机上执行,并且其中所述处理器通过所述网络来与所述计算机通
11.如权利要求8所述的系统,其中所述组件的所述第二实例配置为具有与所述组件 的所述第一实例不同的日志记入水平。
12.如权利要求8所述的系统,其中所述第一消息、所述第二消息和所述第三消息包括 简单对象访问协议(SOAP)消息。
13.如权利要求8所述的系统,其中所述处理器进一步配置用于响应于所述第一切换 命令的接收来修改所述重定向器的配置文件中的重定向条目。
14.如权利要求8所述的系统,其中所述地址是第一地址,所述组件的所述第一实例配 置用于在第二地址监听传入的远程过程调用消息,并且所述重定向器配置用于向所述第二 地址处的所述组件的所述第一实例转发所述第一消息。
15.一种系统,包括用于提供重定向器的装置,所述重定向器配置用于从应用接收寻址到组件的地址的第 一消息,以及将所述第一消息向所述组件的第一实例转发,其中所述应用包括所述组件;用于接收克隆命令、第一切换命令和第二切换命令的装置;用于响应于所述克隆命令的接收而生成所述组件的第二实例的装置,其中所述第一实 例和所述第二实例配置用于并发地监听传入消息;用于响应于所述第一切换命令的接收而将所述重定向器重新配置用于将在所述地址 处接收的所有第二消息向所述组件的所述第二实例而非所述第一实例转发的装置,其中所 述第二消息在所述第一消息之后接收;以及其中所述用于重新配置所述重定向器的装置响应于所述第二切换命令的接收,将所述 重定向器重新配置用于将所有第三消息向所述第一实例而非所述第二实例转发,并且所述 第三消息在所述第一消息和所述第二消息之后接收。
16.如权利要求15所述的系统,其中所述用于生成所述组件的所述第二实例的装置根 据所述组件的、与所述第一实例不同的版本来生成所述第二实例。
17.如权利要求15所述的系统,其中所述用于生成所述组件的所述第二实例的装置将 所述组件的所述第二实例配置为具有与所述组件的所述第一实例不同的日志记入水平。
18.如权利要求15所述的系统,其中所述第一消息、所述第二消息和所述第三消息包 括简单对象访问协议(SOAP)消息。
19.如权利要求15所述的系统,其中所述地址是第一地址,所述组件的所述第一实例 配置用于在第二地址处监听传入的远程过程调用消息,并且所述重定向器配置用于向所述第二地址处的所述组件的所述第一实例转发所述第一消息。
20.如权利要求15所述的系统,其中所述第一地址包括多个端口。
全文摘要
本发明涉及可交换的应用组件。具体地,公开了一种应用测试系统,其限制复杂应用的测试期间的停机时间。该应用测试系统促进接通和断开实现应用功能的多个应用组件中任意组件的任何期望版本。结果是,应用测试人员可以快速地找到、调试和测试完整的应用功能,而不会导致显著的应用不可用时段。
文档编号G06F9/46GK101866313SQ201010163210
公开日2010年10月20日 申请日期2010年4月9日 优先权日2009年4月17日
发明者J·拉沃拉托, L·萨尔瓦尼斯奇, M·蒙特希萨 申请人:埃森哲环球服务有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1