xvfb-run trava na armadilha / espera no Ubuntu 15.04 AMI do Elastic Bamboo na AWS

0

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.

    
por Ernest Mueller 17.11.2015 / 16:55

1 resposta

0

Ah, não importa, eu finalmente encontrei o problema - o Atlassian tinha adicionado um script de wrapper do Xvfb (/ usr / local / bin / Xvfb) que estava bloqueando o envio do sinal. Para qualquer um que tenha esse problema no futuro, verifique e verifique se o Xvfb está sendo executado diretamente ou por meio de um wrapper e, se for um wrapper, ele quebrará o xvfb-run.

    
por Ernest Mueller 20.11.2015 / 21:27