JavaFX on headless Jenkins
Kevin Rushforth
kevin.rushforth at oracle.com
Mon Jan 6 12:12:01 PST 2014
The headless toolkit mentioned by David and Richard is one possible
approach, and may be the best long term approach depending on what you
are trying to test (e.g., it won't test rendering, but might be fine for
most of your tests), but as Richard notes, it isn't there yet.
If you prefer not to wait for that, one possible solution would be to
set up a Jenkinks slave to be headful (may need to be hooked up to a
keyboard/mouse or a display). You could then take a look at the system
tests in rt/tests/system for examples of how we run headful tests. I
don't know how feasible this would be for you.
Still another option is to use the oft-maligned StubToolkit (it stubs
out all of Quantum and Prism), which all of our tests in the graphics
and controls modules in JavaFX use. This isn't distributed (see
https://javafx-jira.kenai.com/browse/RT-35010), but can easily be built
from source.
-- Kevin
Richard Bair wrote:
> Hi Tom!
>
> On Jan 4, 2014, at 12:57 PM, Tom Eugelink <tbee at tbee.org> wrote:
>
>
>> I'm trying to run JavaFX UI tests using TestFX on a headless Jenkins server (Ubuntu / Debian). I've gotten to the point where the UI is actually started by Jenkins, but then the test fail with a "no suitable pipeline found". Any suggestions how to fix that?
>>
>
> This was one of my long-standing TODO items: have a “headless” glass that would allow us to run quantum / prism tests headless. However for running scene graph or UI control tests, you should be using the “StubToolkit” instead of QuantumToolkit. The StubToolkit is located in Graphics/src/test, so for using it for 3rd party tests (like JFXtras) you would need to jar up the classes produced during a test run of FX. Then just specify the stub toolkit via -Djavafx.toolkit=com.sun.javafx.pgstub.StubToolkit
>
> Now, longer term I wanted to nuke the StubToolkit. If we had a headless Glass then we could test with Prism/Quantum directly instead of the stubs. But this isn’t straightforward so it hasn’t been attempted yet.
>
> Hope that helps.
> Richard
>
>
>> :*test*
>> Executing task ':test' (up-to-date check took 0.054 secs) due to:
>> No history is available.
>> Starting process 'Gradle Worker 1'. Working directory: /var/lib/jenkins/workspace/JFXtras8.0 Command: /usr/lib/jvm/jdk1.8.0-ea/bin/java -Djava.security.manager=jarjar.org.gradle.process.internal.child.BootstrapSecurityManager -Dfile.encoding=UTF-8 -ea -cp /var/lib/jenkins/.gradle/caches/1.9/workerMain/gradle-worker.jar jarjar.org.gradle.process.internal.launcher.GradleWorkerMain
>> Successfully started process 'Gradle Worker 1'
>> Gradle Worker 1 executing tests.
>>
>> jfxtras.labs.scene.control.test.ListSpinnerEditableTest > enterSelectValueByTyping STANDARD_ERROR
>> Graphics Device initialization failed for : es2, sw
>> Error initializing QuantumRenderer: no suitable pipeline found
>> java.lang.RuntimeException: java.lang.RuntimeException: Error initializing QuantumRenderer: no suitable pipeline found
>> at com.sun.javafx.tk.quantum.QuantumRenderer.getInstance(QuantumRenderer.java:300)
>> at com.sun.javafx.tk.quantum.QuantumToolkit.init(QuantumToolkit.java:244)
>> at com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:179)
>> at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:210)
>> at com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:653)
>> at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:678)
>> at com.sun.javafx.application.LauncherImpl.access$000(LauncherImpl.java:56)
>> at com.sun.javafx.application.LauncherImpl$1.run(LauncherImpl.java:158)
>> at java.lang.Thread.run(Thread.java:744)
>> Caused by: java.lang.RuntimeException: Error initializing QuantumRenderer: no suitable pipeline found
>> at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.init(QuantumRenderer.java:98)
>> at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:128)
>> ... 1 more
>> Exception in thread "Thread-4" java.lang.RuntimeException: No toolkit found
>> at com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:191)
>> at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:210)
>> at com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:653)
>> at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:678)
>> at com.sun.javafx.application.LauncherImpl.access$000(LauncherImpl.java:56)
>> at com.sun.javafx.application.LauncherImpl$1.run(LauncherImpl.java:158)
>> at java.lang.Thread.run(Thread.java:744)
>>
>>
>>
>
>
More information about the openjfx-dev
mailing list