JRuby-дружественный метод для параллельного тестирования приложения Rails - PullRequest
2 голосов
/ 20 мая 2010

Я ищу систему для распараллеливания большого набора тестов в приложении Ruby on Rails (с использованием rspec, cucumber), которое работает с использованием JRuby. Огурец на самом деле не так уж и плох, но полный набор rSpec в настоящее время занимает около 20 минут.

Системы, которые я могу найти (гидра, параллельное тестирование), выглядят так, как будто они используют форкинг, что не является идеальным решением для среды JRuby.

1 Ответ

2 голосов
/ 17 июня 2010

У нас пока нет хорошего ответа для такого рода приложений. Совсем недавно я работал над форком spork , который позволяет поддерживать процесс в рабочем состоянии и повторно запускать в нем спецификации или функции, при условии, что вы используете платформу приложений, поддерживающую перезагрузку кода (например, Rails). Взгляните на приложение jrubyhub , чтобы узнать, как я использую Spork.

Вы можете иметь возможность порождать экземпляр spork для своего приложения и затем отправлять ему несколько потоковых запросов для запуска различных спецификаций. Но тогда вы полагаетесь на то, что внутренние компоненты RSpec являются поточно-ориентированными, и, к сожалению, я почти уверен, что это не так.

Возможно, вы могли бы взять мой код в качестве отправной точки и создать кластер экземпляров Spork, а затем иметь клиента, который может распределить ваш набор тестов по ним. Это не сэкономит память и все равно займет много времени для запуска, но если вы запустите их все один раз и просто повторно используете их для повторных запусков, вы можете получить некоторое повышение эффективности.

Не стесняйтесь заходить по адресу user@jruby.codehaus.org или #jruby на freenode для получения дополнительных идей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...