JRuby を使用して動作する Ruby on Rails アプリ (rspec、cucumber を使用) で大規模なテスト スイートを並列化するシステムを探しています。実際、Cucumber はそれほど悪くはありませんが、完全な rSpec スイートは現在、実行に 20 分近くかかります。
私が見つけたシステム (hydra、parallel-test) は、フォークを使用しているように見えますが、これは JRuby 環境にとって理想的なソリューションではありません。
JRuby を使用して動作する Ruby on Rails アプリ (rspec、cucumber を使用) で大規模なテスト スイートを並列化するシステムを探しています。実際、Cucumber はそれほど悪くはありませんが、完全な rSpec スイートは現在、実行に 20 分近くかかります。
私が見つけたシステム (hydra、parallel-test) は、フォークを使用しているように見えますが、これは JRuby 環境にとって理想的なソリューションではありません。
現在、この種のアプリケーションに対する適切な回答はありません。つい最近、コードのリロードをサポートするアプリフレームワーク(Railsなど)を使用している場合に、プロセスを実行し続け、仕様または機能を再実行できるスポークのフォークに取り組みました。Sporkの使用例については、jrubyhubアプリケーションをご覧ください。
アプリケーションのsporkインスタンスを生成してから、複数のスレッド化されたリクエストを送信して、さまざまな仕様を実行できる場合があります。しかし、あなたはスレッドセーフであるためにRSpec内部に依存しています、そして残念ながら私はそれらがそうではないと確信しています。
たぶん、私のコードを出発点として、sporkインスタンスのクラスターを構築し、テストスイートをそれらに分散できるクライアントを作成することができます。メモリを節約することはなく、起動に長い時間がかかりますが、一度すべて起動して繰り返し実行するために再利用すると、効率がいくらか向上する可能性があります。
その他のアイデアについては、user@jruby.codehaus.orgまたはfreenodeの#jrubyにお気軽にお立ち寄りください。