我使用Hudson自动测试一个非常大的重要产品。我想让我的测试主机能够运行尽可能多的并发构建,因为它们理论上会支持,除了excel-tests,它必须在每台机器上随时运行一个。任何数量的非excel测试都可以同时运行,但每台机器最多只能运行一次excel测试。
背景:
我的大多数测试都是正常的单元测试 - 我可以轻松地并行运行。遗憾的是,我的单元测试计划中的一个实质性且耗时的部分包括已在Excel中实现的测试。
您可能认为在Excel中实施测试很疯狂 - 实际上有一个重要原因:我们的大多数用户通过Excel访问我们的系统。 Excel有自己古怪的数据处理方式,因此保证我们的东西适用于Excel用户的唯一方法就是逐字实现我们的Excel应用程序的注册测试。
我编写了一个测试运行工具,它允许我轻松地启动一组excel测试:每个测试都是一个.xls文件。每个组都是一个充满excel文件的文件夹。我有大约30个小组需要运行进行端到端测试。我的工具将每个测试的结果转换为Hudson能够理解的JUnit样式XML。测试使用pywin32com库来自动化excel。当他们自己运行时,他们是可靠的。
我有一组专门用于运行测试的计算机。每台机器都是四核的,理论上可以同时运行很多东西。不幸的是,我发现COM不能用于一次安全地控制每台机器超过1个excel。
也就是说,如果第二个构建星试图通过COM与Excel通信它可能会干扰已经运行的那个并导致两个测试都失败。
我可以像机器允许的那样运行许多其他非excel进程,但我需要找到一种方法,以便Hudson不会尝试启动任何超过1个进程,同时在任何一台机器上都需要excel。
答案 0 :(得分:5)
听起来像Locks和Latches插件可能对你有帮助。
http://hudson.gotdns.com/wiki/display/HUDSON/Locks+and+Latches+plugin
答案 1 :(得分:0)
不是哈德森java吗?
由于你已经标记了这个帖子python,我会指出buildbot,slave locks来限制各个从属的各个步骤(如果你愿意,可以使用它们作为更粗的锁定)。