RFR: 8293910: tools/launcher/FXLauncherTest.java fail with jfx [v2]

Leslie Zhai lzhai at openjdk.org
Wed Sep 21 01:41:52 UTC 2022


On Tue, 20 Sep 2022 14:23:22 GMT, Kevin Rushforth <kcr at openjdk.org> wrote:

>> Leslie Zhai has updated the pull request incrementally with one additional commit since the last revision:
>> 
>>   8293910: Try --upgrade-module-path and --patch-module but still failed
>
> How does the test fail? Does it actually find and load the "mockfx" classes, but subsequently fail? Or is it unable to patch/upgrade the javafx.graphics module with the "mockfx" classes?

Hi @kevinrushforth 

I updated the testcase to check whether or not FX is part of jdk:


        // Check whether or not FX is part of jdk
        try {
            fxClass = Class.forName(FX_MARKER_CLASS);
        } catch (ClassNotFoundException ex) {
            // do nothing
        }
        if (fxClass != null) {
            System.out.println("JavaFX modules included in the JDK");
        }


And tried to `--upgrade-module-path` in the `doFxCompile` when JavaFX modules included in the JDK:


    static void doFxCompile(String...compilerArgs) {
        if (fxClass == null) {
            compileFXModule();
        }

        List<String> fxCompilerArgs = new ArrayList<>();
        if (fxClass == null) {
            fxCompilerArgs.add("--module-path=" + MODULE_DIR);
        } else {
            fxCompilerArgs.add("--upgrade-module-path=" + IMPORT_MODULE_DIR);
        }
        fxCompilerArgs.add("--add-modules=javafx.graphics");
        fxCompilerArgs.addAll(Arrays.asList(compilerArgs));
        compile(fxCompilerArgs.toArray(new String[fxCompilerArgs.size()]));
    }


Also tried `--patch-module` in the `doFxExec`:


    static TestResult doFxExec(String...cmds) {
        List<String> fxCmds = new ArrayList<>();
        fxCmds.addAll(Arrays.asList(cmds));
        if (fxClass == null) {
            fxCmds.add(1, "--module-path=" + MODULE_DIR);
            fxCmds.add(2, "--add-modules=javafx.graphics");
        } else {
            fxCmds.add(1, "--upgrade-module-path=" + IMPORT_MODULE_DIR);
            fxCmds.add(2, "--patch-module=javafx.graphics=" + IMPORT_MODULE_DIR + "/javafx.graphics.jmod");
        }
        return doExec(fxCmds.toArray(new String[fxCmds.size()]));
    }


But it might be unable to patch/upgrade the javafx.graphics module with the "mockfx" classes:


STDOUT:
_____________________________________________
test# 1-  Main method: public static void main(String[] args) { launch(args); }
Main-Class: helloworld.HelloWorld
renaming fxtest.jar to testBasicFXApp_useCP_noJAC-1-fxtest.jar
FAIL: testBasicFXApp_useCP_noJAC:1 : test with helloworld.HelloWorld
Test static void FXLauncherTest.testBasicFXApp() throws java.lang.Exception failed: java.lang.reflect.InvocationTargetException 
----begin detailed exceptions----
java.lang.reflect.InvocationTargetException
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:119)
	at java.base/java.lang.reflect.Method.invoke(Method.java:578)
	at TestHelper.run(TestHelper.java:200)
	at FXLauncherTest.main(FXLauncherTest.java:469)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
	at java.base/java.lang.reflect.Method.invoke(Method.java:578)
	at com.sun.javatest.regtest.agent.MainWrapper$MainThread.run(MainWrapper.java:125)
	at java.base/java.lang.Thread.run(Thread.java:1589)
Caused by: java.lang.Exception: Failed: testBasicFXApp_useCP_noJAC:1
	at FXLauncherTest.checkStatus(FXLauncherTest.java:205)
	at FXLauncherTest.testBasicFXApp(FXLauncherTest.java:311)
	at FXLauncherTest.testBasicFXApp(FXLauncherTest.java:266)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
	... 7 more
----end detailed exceptions----
_____________________________________________
test# 2-  Main method: public static void main(String[] args) { launch(args); }
Main-Class: helloworld.ExtHello
renaming fxtest.jar to testExtendFXApp_useCP_noJAC-2-fxtest.jar
FAIL: testExtendFXApp_useCP_noJAC:2 : test with helloworld.ExtHello
Test static void FXLauncherTest.testExtendFXApp() throws java.lang.Exception failed: java.lang.reflect.InvocationTargetException 
----begin detailed exceptions----
java.lang.reflect.InvocationTargetException
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:119)
	at java.base/java.lang.reflect.Method.invoke(Method.java:578)
	at TestHelper.run(TestHelper.java:200)
	at FXLauncherTest.main(FXLauncherTest.java:469)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
	at java.base/java.lang.reflect.Method.invoke(Method.java:578)
	at com.sun.javatest.regtest.agent.MainWrapper$MainThread.run(MainWrapper.java:125)
	at java.base/java.lang.Thread.run(Thread.java:1589)
Caused by: java.lang.Exception: Failed: testExtendFXApp_useCP_noJAC:2
	at FXLauncherTest.checkStatus(FXLauncherTest.java:205)
	at FXLauncherTest.testExtendFXApp(FXLauncherTest.java:369)
	at FXLauncherTest.testExtendFXApp(FXLauncherTest.java:323)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
	... 7 more
----end detailed exceptions----
_____________________________________________
test# 3: abort on missing Main-Class
JavaFX-Application-Class: helloworld.HelloWorld
renaming fxtest.jar to testMissingMC-3-fxtest.jar
FAIL: testMissingMC:3 : test with helloworld.HelloWorld
Test static void FXLauncherTest.testMissingMC() throws java.lang.Exception failed: java.lang.reflect.InvocationTargetException 
----begin detailed exceptions----
java.lang.reflect.InvocationTargetException
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:119)
	at java.base/java.lang.reflect.Method.invoke(Method.java:578)
	at TestHelper.run(TestHelper.java:200)
	at FXLauncherTest.main(FXLauncherTest.java:469)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
	at java.base/java.lang.reflect.Method.invoke(Method.java:578)
	at com.sun.javatest.regtest.agent.MainWrapper$MainThread.run(MainWrapper.java:125)
	at java.base/java.lang.Thread.run(Thread.java:1589)
Caused by: java.lang.Exception: Failed: testMissingMC:3
	at FXLauncherTest.checkStatus(FXLauncherTest.java:205)
	at FXLauncherTest.testMissingMC(FXLauncherTest.java:399)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
	... 7 more
----end detailed exceptions----
_____________________________________________
test# 4: test for erroneous jfxrt.jar loading
Main-Class: helloworld.HelloJava
renaming fxtest.jar to testExtraneousJars_useCP-4-fxtest.jar
FAIL: testExtraneousJars_useCP:4 : test with helloworld.HelloJava
Test static void FXLauncherTest.testExtraneousJars() throws java.lang.Exception failed: java.lang.reflect.InvocationTargetException 
----begin detailed exceptions----
java.lang.reflect.InvocationTargetException
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:119)
	at java.base/java.lang.reflect.Method.invoke(Method.java:578)
	at TestHelper.run(TestHelper.java:200)
	at FXLauncherTest.main(FXLauncherTest.java:469)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
	at java.base/java.lang.reflect.Method.invoke(Method.java:578)
	at com.sun.javatest.regtest.agent.MainWrapper$MainThread.run(MainWrapper.java:125)
	at java.base/java.lang.Thread.run(Thread.java:1589)
Caused by: java.lang.Exception: Failed: testExtraneousJars_useCP:4
	at FXLauncherTest.checkStatus(FXLauncherTest.java:205)
	at FXLauncherTest.testExtraneousJars(FXLauncherTest.java:453)
	at FXLauncherTest.testExtraneousJars(FXLauncherTest.java:410)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
	... 7 more
----end detailed exceptions----
Total: Passed: 0, Failed 4
STDERR:
Executed command: /home/loongson/private/jdk-ls/build/linux-loongarch64-server-fastdebug/images/jdk/bin/java --module-path=mods --add-modules=javafx.graphics -cp /home/loongson/private/jdk-ls/build/linux-loongarch64-server-fastdebug/test-support/jtreg_test_jdk_tools_launcher_FXLauncherTest_java/scratch/0/fxtest.jar helloworld.HelloWorld one two 

###TestError###: test did not return 0 exit value
++++Begin Test Info++++
Test Status: FAIL
++++Test Environment++++
  PATH=/bin:/usr/bin:/usr/sbin
  DISPLAY=:0
  TEST_IMAGE_DIR=/home/loongson/private/jdk-ls/build/linux-loongarch64-server-fastdebug/images/test
  _JVM_DWARF_PATH=/home/loongson/private/jdk-ls/build/linux-loongarch64-server-fastdebug/images/symbols
  XMODIFIERS=@im=fcitx
  LC_ALL=C
  CLASSPATH=/home/loongson/private/jdk-ls/build/linux-loongarch64-server-fastdebug/test-support/jtreg_test_jdk_tools_launcher_FXLauncherTest_java/classes/0/tools/launcher/FXLauncherTest.d:/home/loongson/private/jdk-ls/test/jdk/tools/launcher:/home/loongson/private/jdk-ls/build/linux-loongarch64-server-fastdebug/test-support/jtreg_test_jdk_tools_launcher_FXLauncherTest_java/classes/0/test/lib:/home/loongson/private/jdk-ls/test/lib:/home/loongson/public/jtreg/lib/javatest.jar:/home/loongson/public/jtreg/lib/jtreg.jar
  LANG=zh_CN.UTF-8
  HOME=/home/loongson
++++Test Output++++
  Error occurred during initialization of boot layer
  java.lang.module.FindException: Unable to compute the hash of module javafx.graphics
++++Test Stack Trace++++
java.lang.Throwable: current stack of the test
  TestHelper.doExec(TestHelper.java:476)
  TestHelper.doExec(TestHelper.java:437)
  FXLauncherTest.doFxExec(FXLauncherTest.java:252)
  FXLauncherTest.testBasicFXApp(FXLauncherTest.java:292)
  FXLauncherTest.testBasicFXApp(FXLauncherTest.java:266)
  java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
  java.base/java.lang.reflect.Method.invoke(Method.java:578)
  TestHelper.run(TestHelper.java:200)
  FXLauncherTest.main(FXLauncherTest.java:469)
  java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
  java.base/java.lang.reflect.Method.invoke(Method.java:578)
  com.sun.javatest.regtest.agent.MainWrapper$MainThread.run(MainWrapper.java:125)
  java.base/java.lang.Thread.run(Thread.java:1589)
++++End of Test Info++++

Executed command: /home/loongson/private/jdk-ls/build/linux-loongarch64-server-fastdebug/images/jdk/bin/java --module-path=mods --add-modules=javafx.graphics -cp /home/loongson/private/jdk-ls/build/linux-loongarch64-server-fastdebug/test-support/jtreg_test_jdk_tools_launcher_FXLauncherTest_java/scratch/0/fxtest.jar helloworld.ExtHello one two 

###TestError###: test did not return 0 exit value
++++Begin Test Info++++
Test Status: FAIL
++++Test Environment++++
  PATH=/bin:/usr/bin:/usr/sbin
  DISPLAY=:0
  TEST_IMAGE_DIR=/home/loongson/private/jdk-ls/build/linux-loongarch64-server-fastdebug/images/test
  _JVM_DWARF_PATH=/home/loongson/private/jdk-ls/build/linux-loongarch64-server-fastdebug/images/symbols
  XMODIFIERS=@im=fcitx
  LC_ALL=C
  CLASSPATH=/home/loongson/private/jdk-ls/build/linux-loongarch64-server-fastdebug/test-support/jtreg_test_jdk_tools_launcher_FXLauncherTest_java/classes/0/tools/launcher/FXLauncherTest.d:/home/loongson/private/jdk-ls/test/jdk/tools/launcher:/home/loongson/private/jdk-ls/build/linux-loongarch64-server-fastdebug/test-support/jtreg_test_jdk_tools_launcher_FXLauncherTest_java/classes/0/test/lib:/home/loongson/private/jdk-ls/test/lib:/home/loongson/public/jtreg/lib/javatest.jar:/home/loongson/public/jtreg/lib/jtreg.jar
  LANG=zh_CN.UTF-8
  HOME=/home/loongson
++++Test Output++++
  Error occurred during initialization of boot layer
  java.lang.module.FindException: Unable to compute the hash of module javafx.graphics
++++Test Stack Trace++++
java.lang.Throwable: current stack of the test
  TestHelper.doExec(TestHelper.java:476)
  TestHelper.doExec(TestHelper.java:437)
  FXLauncherTest.doFxExec(FXLauncherTest.java:252)
  FXLauncherTest.testExtendFXApp(FXLauncherTest.java:350)
  FXLauncherTest.testExtendFXApp(FXLauncherTest.java:323)
  java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
  java.base/java.lang.reflect.Method.invoke(Method.java:578)
  TestHelper.run(TestHelper.java:200)
  FXLauncherTest.main(FXLauncherTest.java:469)
  java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
  java.base/java.lang.reflect.Method.invoke(Method.java:578)
  com.sun.javatest.regtest.agent.MainWrapper$MainThread.run(MainWrapper.java:125)
  java.base/java.lang.Thread.run(Thread.java:1589)
++++End of Test Info++++

ERROR: launcher did not abort properly
Executed command: /home/loongson/private/jdk-ls/build/linux-loongarch64-server-fastdebug/images/jdk/bin/java --module-path=mods --add-modules=javafx.graphics -jar /home/loongson/private/jdk-ls/build/linux-loongarch64-server-fastdebug/test-support/jtreg_test_jdk_tools_launcher_FXLauncherTest_java/scratch/0/fxtest.jar one two 

###TestError###: string <no main manifest attribute> not found
++++Begin Test Info++++
Test Status: FAIL
++++Test Environment++++
  PATH=/bin:/usr/bin:/usr/sbin
  DISPLAY=:0
  TEST_IMAGE_DIR=/home/loongson/private/jdk-ls/build/linux-loongarch64-server-fastdebug/images/test
  _JVM_DWARF_PATH=/home/loongson/private/jdk-ls/build/linux-loongarch64-server-fastdebug/images/symbols
  XMODIFIERS=@im=fcitx
  LC_ALL=C
  CLASSPATH=/home/loongson/private/jdk-ls/build/linux-loongarch64-server-fastdebug/test-support/jtreg_test_jdk_tools_launcher_FXLauncherTest_java/classes/0/tools/launcher/FXLauncherTest.d:/home/loongson/private/jdk-ls/test/jdk/tools/launcher:/home/loongson/private/jdk-ls/build/linux-loongarch64-server-fastdebug/test-support/jtreg_test_jdk_tools_launcher_FXLauncherTest_java/classes/0/test/lib:/home/loongson/private/jdk-ls/test/lib:/home/loongson/public/jtreg/lib/javatest.jar:/home/loongson/public/jtreg/lib/jtreg.jar
  LANG=zh_CN.UTF-8
  HOME=/home/loongson
++++Test Output++++
  Error occurred during initialization of boot layer
  java.lang.module.FindException: Unable to compute the hash of module javafx.graphics
++++Test Stack Trace++++
java.lang.Throwable: current stack of the test
  TestHelper.doExec(TestHelper.java:476)
  TestHelper.doExec(TestHelper.java:437)
  FXLauncherTest.doFxExec(FXLauncherTest.java:252)
  FXLauncherTest.testMissingMC(FXLauncherTest.java:390)
  java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
  java.base/java.lang.reflect.Method.invoke(Method.java:578)
  TestHelper.run(TestHelper.java:200)
  FXLauncherTest.main(FXLauncherTest.java:469)
  java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
  java.base/java.lang.reflect.Method.invoke(Method.java:578)
  com.sun.javatest.regtest.agent.MainWrapper$MainThread.run(MainWrapper.java:125)
  java.base/java.lang.Thread.run(Thread.java:1589)
++++End of Test Info++++

Executed command: /home/loongson/private/jdk-ls/build/linux-loongarch64-server-fastdebug/images/jdk/bin/java --module-path=mods --add-modules=javafx.graphics -verbose:class -cp /home/loongson/private/jdk-ls/build/linux-loongarch64-server-fastdebug/test-support/jtreg_test_jdk_tools_launcher_FXLauncherTest_java/scratch/0/fxtest.jar helloworld.HelloJava one two 

###TestError###: test did not return 0 exit value
++++Begin Test Info++++
Test Status: FAIL
++++Test Environment++++
  PATH=/bin:/usr/bin:/usr/sbin
  DISPLAY=:0
  TEST_IMAGE_DIR=/home/loongson/private/jdk-ls/build/linux-loongarch64-server-fastdebug/images/test
  _JVM_DWARF_PATH=/home/loongson/private/jdk-ls/build/linux-loongarch64-server-fastdebug/images/symbols
  XMODIFIERS=@im=fcitx
  LC_ALL=C
  CLASSPATH=/home/loongson/private/jdk-ls/build/linux-loongarch64-server-fastdebug/test-support/jtreg_test_jdk_tools_launcher_FXLauncherTest_java/classes/0/tools/launcher/FXLauncherTest.d:/home/loongson/private/jdk-ls/test/jdk/tools/launcher:/home/loongson/private/jdk-ls/build/linux-loongarch64-server-fastdebug/test-support/jtreg_test_jdk_tools_launcher_FXLauncherTest_java/classes/0/test/lib:/home/loongson/private/jdk-ls/test/lib:/home/loongson/public/jtreg/lib/javatest.jar:/home/loongson/public/jtreg/lib/jtreg.jar
  LANG=zh_CN.UTF-8
  HOME=/home/loongson
++++Test Output++++
  [0.016s][info][class,load] java.lang.Object source: shared objects file
  [0.019s][info][class,load] java.io.Serializable source: shared objects file
...


Thanks,
Leslie Zhai

-------------

PR: https://git.openjdk.org/jdk/pull/10299


More information about the core-libs-dev mailing list