2012-10-02 25 views
5

Estoy tratando de ejecutar pruebas en Jenkins para un paquete de Python que usa PyQt4, y las pruebas crean ventanas. Como estoy ejecutando las pruebas en Jenkins, necesito redirigir la salida gráfica, así que estoy usando xvfb-run. La mayoría de las veces, esto funciona, pero una fracción del tiempo, la prueba fallará aleatoriamente con:Ejecutando py.test con xvfb-run

/usr/bin/xvfb-run: line 171: kill: (27375) - No such process 

Si volver a ejecutar las pruebas, funciona bien la mayor parte del tiempo (por lo que es sólo un uno -off problema).

¿Alguien ha tenido este problema antes? ¿Tiene alguna idea de soluciones para mejorar la estabilidad de las pruebas?

+3

Creo que es la línea en la secuencia de comandos 'XVFB-run' donde se intenta detectar si hay otra instancia en ejecución, de modo que si se le dio el' interruptor -a', puede volver a intentar con una diferente número de servidor Intente ejecutar con el conmutador '-a '(o' --auto-servernum') para ver si eso hace alguna diferencia. –

Respuesta

1

Si su copia de xvfb-run es same as mine, puedo confirmar que he visto esto también.

En mi caso, el proceso de destino provocó la falla de Xvfb. Esto significa que la propia secuencia de comandos wrapper falla en la línea 171 cuando el desmantelamiento ya no ejecuta Xvfb. Para solucionarlo envolví kill $XVFBPID en un bloque set +e/set -e. También ayuda si especifica --error-file= para que xvfb-run guarde la salida de error estándar asíncrona de Xvfb mientras se está ejecutando el proceso de destino, para que pueda solucionar la causa subyacente.

trabajo en torno a:

# Kill Xvfb now that the command has exited. 
# Ignore failure of kill since we want to be forgiving of Xvfb itself crashing 
set +e 
kill $XVFBPID 
set -e 
+0

Esto lamentablemente no funcionó para mí. Gracias sin embargo. – Sam

1

que funcione a través del proceso de encontrar Xvfb y matarlo.

ps auwx | grep "Xvfb" | grep -v grep 
Cuestiones relacionadas