JRuby método de usar para pruebas en paralelo aplicación Rails
-
03-10-2019 - |
Pregunta
Estoy buscando un sistema para paralelizar una gran cantidad de pruebas en una aplicación Ruby on Rails (usando rspec, pepino) que funciona usando JRuby. Pepino en realidad no es tan malo, pero el conjunto completo RSpec actualmente toma cerca de 20 minutos para correr.
Los sistemas que puedo encontrar (hidra, paralelo-test) parecen que utilizan se bifurcan, que no es la solución ideal para el medio ambiente JRuby.
Solución
No tenemos una buena respuesta para este tipo de aplicación en este momento. Hace poco trabajé en un tenedor de spork que le permite mantener un proceso en ejecución y vuelva a ejecutar las especificaciones o características en él, siempre que estés utilizando un marco de aplicación que soporta código de recarga (como rieles). Echar un vistazo a la href="http://github.com/jruby/jrubyhub" rel="nofollow noreferrer"> jrubyhub aplicación para un ejemplo de cómo uso Spork.
podría ser capaz de generar una instancia spork para su aplicación y luego enviar múltiples, roscado solicitudes a que se ejecute diferentes especificaciones. Pero entonces usted está confiando en elementos internos RSpec a ser flujos seguros, y por desgracia estoy bastante seguro de que no lo son.
Tal vez usted podría tomar mi código como punto de partida y crear un clúster de instancias spork, y luego tener un cliente que puede distribuir su conjunto de pruebas a través de ellos. No va a ahorrar memoria y todavía tardará mucho tiempo para poner en marcha, pero si todos ellos de una vez y acaba de volver a usarlos para distintas ejecuciones inicia, es posible hacer algunas ganancias en eficiencia.
No dude en pasar por user@jruby.codehaus.org o #jruby en freenode para obtener más ideas.