2010-05-20 13 views
2

Je suis à la recherche d'un système pour paralléliser une grande suite de tests dans une application Ruby on Rails (en utilisant rspec, cucumber) qui fonctionne avec JRuby. Le concombre n'est pas vraiment mauvais, mais la suite complète de rSpec prend actuellement près de 20 minutes à courir. Les systèmes que je peux trouver (hydra, parallel-test) ont l'air d'utiliser le forking, ce qui n'est pas la solution idéale pour l'environnement JRuby.Méthode compatible JRuby pour les tests en parallèle Rails application

Répondre

2

Nous n'avons pas de bonne réponse pour ce genre d'application pour le moment. Tout récemment, j'ai travaillé sur une fourche de spork qui vous permet de faire tourner un processus et de ré-exécuter des spécifications ou des fonctionnalités, à condition d'utiliser un framework d'application prenant en charge le rechargement de code (comme Rails). Jetez un oeil à l'application jrubyhub pour un exemple de la façon dont j'utilise Spork.

Vous pouvez peut générer une instance spork pour votre application, puis envoyer plusieurs demandes thread pour y exécuter différentes spécifications. Mais alors vous comptez sur les internes de RSpec pour être thread-safe, et malheureusement je suis sûr qu'ils ne le sont pas. Peut-être que vous pourriez prendre mon code comme point de départ et construire un cluster d'instances spork, et ensuite avoir un client qui peut distribuer votre suite de tests à travers eux. Cela ne va pas économiser de la mémoire et prendra encore beaucoup de temps à démarrer, mais si vous les lancez tous une seule fois et que vous les réutilisez simplement pour des passages répétés, vous pourriez gagner en efficacité. N'hésitez pas à arrêter par [email protected] ou #jruby sur freenode pour plus d'idées.