Estou tentando executar alguns testes de robô sem cabeça / selênio via Elastic Bamboo usando o Xvfb, no Ubuntu 15.04 no AWS EC2. Funciona se eu executar o Xvfb manualmente e depois executar o teste ...
export display=:99
Xvfb :99 -screen 0 1024x768x24 -nolisten tcp -ac &
pybot --nostatusrc --variablefile variables/vars.py -e TBD -e broken -x xunit -d reports/ tests/
<test output appears>
Mas eu quero usar o script xvfb-run fornecido para que eu possa executar vários testes em paralelo e fazer com que eles usem telas diferentes. Quando eu executo via xvfb-run, ele trava, sem saída, nunca termina.
xvfb-run -a -e /dev/stdout --nostatusrc --variablefile variables/vars.py -e TBD -e broken -x xunit -d reports/ tests/
<hangs>
No script / usr / bin / xvfb-run, esse é o núcleo da funcionalidade:
# Start Xvfb.
MCOOKIE=$(mcookie)
tries=10
while [ $tries -gt 0 ]; do
tries=$(( $tries - 1 ))
XAUTHORITY=$AUTHFILE xauth source - << EOF >>"$ERRORFILE" 2>&1
add :$SERVERNUM $XAUTHPROTO $MCOOKIE
EOF
# handle SIGUSR1 so Xvfb knows to send a signal when it's ready to accept
# connections
trap : USR1
(trap '' USR1; exec Xvfb ":$SERVERNUM" $XVFBARGS $LISTENTCP -auth $AUTHFILE >>"$ERRORFILE" 2>&1) &
XVFBPID=$!
wait || :
if kill -0 $XVFBPID 2>/dev/null; then
break
elif [ -n "$AUTONUM" ]; then
# The display is in use so try another one (if '-a' was specified).
SERVERNUM=$((SERVERNUM + 1))
SERVERNUM=$(find_free_servernum)
continue
fi
error "Xvfb failed to start" >&2
XVFBPID=
exit 1
done
Nada aparece no stdout (ou um log se eu configurá-lo para um arquivo). Então eu editei xvfb-run para set -x, e o que acontece é que o script chega ao exec e então trava:
...
16-Nov-2015 14:36:52 + xauth source -
16-Nov-2015 14:36:52 + trap : USR1
16-Nov-2015 14:36:52 + XVFBPID=6123
16-Nov-2015 14:36:52 + wait
16-Nov-2015 14:36:52 + trap '' USR1
16-Nov-2015 14:36:52 + exec Xvfb :99 -screen 0 640x480x8 -nolisten tcp -auth /tmp/xvfb-run.js9dgH/Xauthority
<hangs here>
Olhando mais para ele, ele está chegando ao "wait", e está esperando que o filho envie de volta um SIGUSR1 para continuar, mas ele nunca está sendo enviado do Xvfb ou não foi recebido corretamente pelo shell.
Alguém tem uma linha sobre qual poderia ser o problema?
Funciona na área de trabalho do Ubuntu 15.10 no VirtualBox, no servidor Ubuntu 15.10 no VirtualBox e no arquivo Canonical Ubuntu AMI (ami-3ad5af50) no EC2, por isso deve ser algo específico para o AMI do Ubuntu configurado pela Atlassian, mas não posso descobrir o que ... Eu atualizei manualmente uma instância da AMI para 15.10, mas isso não esclareceu.