5

我使用 Hudson 来自动化测试一个非常重要的产品。我希望我的测试主机能够运行理论上支持的尽可能多的并发构建,但 excel 测试除外,它必须在任何时候每台机器运行一个。可以同时运行任意数量的非 excel 测试,但是每台机器一次最多只能运行一个 excel 测试。

背景:

我的大多数测试都是普通的单元测试——我可以轻松地并行运行这种东西。不幸的是,我的单元测试计划中的一个重要且耗时的部分包括已在 Excel 中实现的测试。

您可能认为在 Excel 中实现测试很疯狂——实际上有一个重要原因:我们的大多数用户通过 Excel 访问我们的系统。Excel 有自己古怪的数据处理方式,因此保证我们的东西适用于 Excel 用户的唯一方法是从字面上实现我们的 reg-test 我们的应用程序 Excel。

我编写了一个测试运行工具,它可以让我轻松启动一组 excel 测试:每个测试都是一个 .xls 文件。每个组都是一个充满 excel 文件的文件夹。我有大约 30 个组需要运行以进行端到端测试。我的工具将每个测试的结果转换为 Hudson 能够理解的 JUnit 样式 XML。测试使用 pywin32com 库来自动化 excel。当它们自己运行时,它们是可靠的。

我有一组专门用于运行测试的计算机。每台机器都是四核的,理论上可以同时运行很多东西。不幸的是,我发现 COM 不能用于一次安全地控制每台机器超过 1 个 excel。

也就是说,如果第二个构建星尝试通过 COM 与 Excel 对话,它可能会干扰已经运行的构建并导致两个测试都失败。

我可以在机器允许的范围内运行尽可能多的其他非 excel 进程,但我需要找到一种方法,以便 Hudson 不会尝试在任何一台机器上同时启动超过 1 个需要 excel 的进程。

4

2 回答 2

5

听起来 Locks and Latches 插件可能会对您有所帮助。

http://hudson.gotdns.com/wiki/display/HUDSON/Locks+and+Latches+plugin

于 2009-02-05T19:13:37.847 回答
0

哈德森不是java吗?

由于您已标记此帖子 python,我将指出buildbot具有从属锁以限制单个从属上的各个步骤(或者如果您愿意,可以将它们用作更粗略的锁)。

于 2009-02-05T18:17:59.517 回答