(EE) config / hal: Falha de NewInputDeviceRequest (2) ao tentar executar o Xvfb no centos

1

Estou tentando configurar testes do Selenium em um servidor de IC (Jenkins). Ele roda no Centos 5 e não tem monitor. Para os testes do Selenium eu preciso de uma maneira de rodar o Firefox, então eu tive o Xvfb instalado. Estou usando o plugin-maven do selenium para iniciar o Xvfb.

<profile>
    <id>xvfb-selenium</id>
    <build>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>selenium-maven-plugin</artifactId>
                <version>2.0</version>
                <executions>
                    <execution>
                        <id>xvfb</id>
                        <phase>pre-integration-test</phase>
                        <goals>
                            <goal>xvfb</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</profile>

Está dentro de um perfil porque quero executá-lo no CI, mas as máquinas de desenvolvimento não precisam disso.

Novamente eu uso o plugin-maven-selenium para executar meus testes seleneses

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>selenium-maven-plugin</artifactId>
    <version>2.0</version>
    <executions>
        <execution>
            <id>nessos-selenium-tests</id>
            <phase>integration-test</phase>
            <configuration>
                <browser>*firefox</browser>
                <suite>src/test/resources/test-suite.html</suite>
                <startURL>${selenium.startURL}</startURL>
            </configuration>
            <goals>
                <goal>selenese</goal>
            </goals>
        </execution>
    </executions>
</plugin>

Agora, quando tento executar isso, recebo esse erro no Jenkins:

message : Selenium is already running on port 4444. Or some other service is.
Stack trace : 
java.net.BindException: Selenium is already running on port 4444. Or some other service is.
    at org.openqa.selenium.server.SeleniumServer.start(SeleniumServer.java:410)

Isso não me diz muito, então eu investiguei mais. Em target / selenium / xvfb.log, recebi este erro:

(EE) config/hal: NewInputDeviceRequest failed (2)
(EE) config/hal: NewInputDeviceRequest failed (2)
(EE) config/hal: NewInputDeviceRequest failed (2)
(EE) config/hal: NewInputDeviceRequest failed (2)
(EE) config/hal: NewInputDeviceRequest failed (2)

Neste momento eu sou sem noção. De logs maven eu posso ver que o objetivo xvfb é executado antes de selenese com esta saída:

Created dir: /home/jenkins/workspace/myBuild/target/selenium
Launching Xvfb
[INFO] Redirecting output to: /home/jenkins/workspace/myBuild/target/selenium/xvfb.log
Waiting for Xvfb...
Xvfb started

Eu tentei seguir as instruções aqui: link

eu fiz o

chmod u+s 'which Xvfb'

coisa e a mensagem de erro mudou para:

Fatal server error:
 PAM authentication failed, cannot start X server.
        Perhaps you do not have console ownership?

Na parte inferior da página headless-with-xvfb, havia instruções para corrigir isso. Eu fiz isso também e agora recebo (EE) config/hal: NewInputDeviceRequest failed (2) novamente.

Alguém sabe como eu continuaria a depurar esse erro? Ou alguém sabe o que esse erro significa?

    
por palto 30.09.2011 / 14:00

1 resposta

1

Realmente constrangedor :) Já estava funcionando e essa mensagem de erro pode ser ignorada. Minha solução final é iniciar o xvfb com o plugin na fase de pré-integração, executar testes jUnit com a API do WebDriver na fase de teste de integração. Xvfb fecha quando a execução do maven é concluída

    
por 05.10.2011 / 09:43