【问题标题】:How do I ensure that only one of a certain category of job runs at once in Hudson?如何确保在 Hudson 中一次只运行某一类别的工作中的一个?
【发布时间】:2010-10-05 17:41:51
【问题描述】:

我使用 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 的进程。

【问题讨论】:

标签: hudson


【解决方案1】:

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

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

【讨论】:

【解决方案2】:

哈德森不是java吗?

既然你已经标记了这篇文章 python,我会指出 buildbot,有 slave locks 来限制单个从站上的单个步骤(或者如果你愿意,可以将它们用作更粗略的锁)。

【讨论】:

  • 我正在 Hudson 测试一个 Python / Excel 应用程序。 Hudson 是用 Java 编写的,但我实际上并没有进行任何 Java 编程。
猜你喜欢
  • 1970-01-01
  • 2021-02-06
  • 2012-01-08
  • 1970-01-01
  • 1970-01-01
  • 2011-04-27
  • 2011-09-22
  • 2016-01-15
  • 1970-01-01
相关资源
最近更新 更多