我正在寻找一个系统来并行化使用 JRuby 工作的 Ruby on Rails 应用程序(使用 rspec、黄瓜)中的大量测试。Cucumber 其实还不错,但完整的 rSpec 套件目前需要将近 20 分钟才能运行。
我能找到的系统(hydra、parallel-test)看起来像是使用分叉,这不是 JRuby 环境的理想解决方案。
我正在寻找一个系统来并行化使用 JRuby 工作的 Ruby on Rails 应用程序(使用 rspec、黄瓜)中的大量测试。Cucumber 其实还不错,但完整的 rSpec 套件目前需要将近 20 分钟才能运行。
我能找到的系统(hydra、parallel-test)看起来像是使用分叉,这不是 JRuby 环境的理想解决方案。
对于这种应用程序,我们现在没有一个好的答案。就在最近,我在spork的一个分支上工作,它允许您保持进程运行并重新运行其中的规范或功能,前提是您使用的是支持代码重新加载的应用程序框架(如 Rails)。查看jrubyhub应用程序,了解我如何使用 Spork 的示例。
您可能能够为您的应用程序生成一个 spork 实例,然后向它发送多个线程请求以运行不同的规范。但是你依赖 RSpec 内部是线程安全的,不幸的是我很确定他们不是。
也许您可以以我的代码为起点,构建一个 spork 实例集群,然后拥有一个可以在它们之间分发您的测试套件的客户端。它不会节省内存并且仍然需要很长时间才能启动,但是如果您将它们全部启动一次并重复使用它们进行重复运行,您可能会提高效率。
请随时通过 user@jruby.codehaus.org 或 freenode 上的#jruby 来获取更多想法。