2012-10-02 22 views
5

sto cercando di eseguire i test di Jenkins per un pacchetto Python che utilizza PyQt4, e le prove di creare finestre. Poiché eseguo i test in Jenkins, devo reindirizzare l'output grafico, quindi sto usando xvfb-run. Il più delle volte, questo funziona, ma una frazione del tempo, la sperimentazione in modo casuale riuscirà con:Esecuzione py.test con Xvfb conduzione

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

Se rieseguire il test, funziona bene la maggior parte del tempo (quindi è solo uno -off problema).

Qualcuno ha incontrato questo problema prima? Avete qualche idea per soluzioni alternative per migliorare la stabilità dei test?

+3

Penso che sia la linea nello script 'Xvfb-run' dove si cerca di rilevare se v'è un altro esempio in esecuzione, per cui se l'interruttore' -a' è stato dato, può riprovare con un diverso numero del server. Prova a correre con l'opzione '-a' (o' --auto-servernum') per vedere se questo fa alcuna differenza. –

risposta

1

Se la copia di Xvfb-run è il same as mine, posso confermare che ho visto anche questo.

Nel mio caso, il processo di destinazione ha causato il crash Xvfb. Ciò significa che lo script del wrapper stesso fallisce alla riga 171 quando si abbatte senza più eseguire Xvfb. Per ovviare a questo problema ho avvolto kill $XVFBPID in un blocco set +e/set -e. Aiuta anche se si specifica --error-file= in modo che xvfb-run salvi l'output di errore standard asincrono da Xvfb mentre il processo di destinazione è in esecuzione, quindi è possibile correggere la causa sottostante.

Aggirare:

# 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

Questo purtroppo non ha funzionato per me. Grazie comunque. – Sam

1

Funziona attraverso trovare il processo Xvfb e ucciderlo.

ps auwx | grep "Xvfb" | grep -v grep 
Problemi correlati