Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Test resources are ignored during "nativeTest" #537

Open
meletis opened this issue Nov 10, 2023 · 0 comments
Open

Test resources are ignored during "nativeTest" #537

meletis opened this issue Nov 10, 2023 · 0 comments
Labels
bug Something isn't working

Comments

@meletis
Copy link

meletis commented Nov 10, 2023

The test resources are not included at runtime when executing "nativeTest".

Steps to reproduce the behavior:

  1. Checkout the following repository at the specific branch: https://github.com/meletis/native-build-tools-bug-report/tree/native-test-failure
  2. Execute the following command and make sure all tests are okay:
$ ./gradlew test
  1. Then execute the following command, which will fail as shown in the logs:
$ ./gradlew nativeTest

Expected behavior:

The tests should finish successfully, just like the ./gradlew test does. Instead, the following error appears in the logs:

Resource with path db/mysql_conf_override could not be found on any of these classloaders: [jdk.internal.loader.ClassLoaders$AppClassLoader@2f7c7260]

Logs:

========================================================================================================================
GraalVM Native Image: Generating 'native-build-tools-bug-report-tests' (executable)...
========================================================================================================================
For detailed information and explanations on the build output, visit:
https://github.com/oracle/graal/blob/master/docs/reference-manual/native-image/BuildOutput.md
------------------------------------------------------------------------------------------------------------------------
[1/8] Initializing...                                                                                   (13.4s @ 0.16GB)
 Java version: 21.0.1+12, vendor version: Oracle GraalVM 21.0.1+12.1
 Graal compiler: optimization level: 2, target machine: armv8-a, PGO: off
 C compiler: cc (apple, arm64, 15.0.0)
 Garbage collector: Serial GC (max heap size: 80% of RAM)
 2 user-specific feature(s):
 - com.oracle.svm.thirdparty.gson.GsonFeature
 - org.graalvm.junit.platform.JUnitPlatformFeature
------------------------------------------------------------------------------------------------------------------------
Build resources:
 - 12.09GB of memory (75.6% of 16.00GB system memory, determined at start)
 - 8 thread(s) (100.0% of 8 available processor(s), determined at start)
[junit-platform-native] Running in 'test listener' mode using files matching pattern [junit-platform-unique-ids*] found in folder [/Users/meletis/Code/mine/native-build-tools-bug-report/build/test-results/test/testlist] and its subfolders.
Found pending operations, continuing analysis.
[2/8] Performing analysis...  [******]                                                                  (40.9s @ 1.62GB)
   13,717 reachable types   (87.8% of   15,620 total)
   22,094 reachable fields  (61.8% of   35,747 total)
   71,606 reachable methods (59.6% of  120,094 total)
    4,437 types, 1,404 fields, and 3,655 methods registered for reflection
       96 types,    99 fields, and   102 methods registered for JNI access
        5 native libraries: -framework CoreServices, -framework Foundation, dl, pthread, z
[3/8] Building universe...                                                                               (6.8s @ 1.64GB)
[4/8] Parsing methods...      [***]                                                                     (11.0s @ 1.84GB)
[5/8] Inlining methods...     [***]                                                                      (1.9s @ 1.47GB)
[6/8] Compiling methods...    [**********]                                                             (102.8s @ 5.04GB)
[7/8] Layouting methods...    [*****]                                                                   (26.7s @ 1.96GB)
[8/8] Creating image...       [***]                                                                     (11.7s @ 2.83GB)
  35.52MB (54.93%) for code area:    40,608 compilation units
  28.27MB (43.71%) for image heap:  350,891 objects and 143 resources
 901.88kB ( 1.36%) for other data
  64.67MB in total
------------------------------------------------------------------------------------------------------------------------
Top 10 origins of code area:                                Top 10 object types in image heap:
  14.05MB java.base                                            9.90MB byte[] for code metadata
   5.31MB testcontainers-1.19.1.jar                            4.83MB byte[] for java.lang.String
   5.97MB svm.jar (Native Image)                               2.54MB java.lang.String
   3.66MB java.xml                                             2.41MB java.lang.Class
   3.44MB mysql-connector-j-8.0.33.jar                         1.67MB byte[] for embedded resources
 849.06kB docker-java-transport-zerodep-3.3.3.jar            873.16kB byte[] for reflection metadata
 533.92kB java.security.jgss                                 835.89kB byte[] for general heap data
 444.65kB jna-5.12.1.jar                                     642.98kB com.oracle.svm.core.hub.DynamicHubCompanion
 401.41kB docker-java-api-3.3.3.jar                          393.03kB c.o.svm.core.hub.DynamicHub$ReflectionMetadata
 389.65kB java.management                                    369.88kB java.util.HashMap$Node
   6.30MB for 52 more packages                                 3.88MB for 3026 more object types
                              Use '-H:+BuildReport' to create a report with more details.
------------------------------------------------------------------------------------------------------------------------
Security report:
 - Binary includes Java deserialization.
 - Use '--enable-sbom' to embed a Software Bill of Materials (SBOM) in the binary.
------------------------------------------------------------------------------------------------------------------------
Recommendations:
 PGO:  Use Profile-Guided Optimizations ('--pgo') for improved throughput.
 INIT: Adopt '--strict-image-heap' to prepare for the next GraalVM release.
 HEAP: Set max heap for improved and more predictable memory usage.
 CPU:  Enable more CPU features with '-march=native' for improved performance.
 QBM:  Use the quick build mode ('-Ob') to speed up builds during development.
------------------------------------------------------------------------------------------------------------------------
                       18.8s (8.6% of total time) in 155 GCs | Peak RSS: 2.84GB | CPU load: 3.38
------------------------------------------------------------------------------------------------------------------------
Produced artifacts:
 /Users/meletis/Code/mine/native-build-tools-bug-report/build/native/nativeTestCompile/native-build-tools-bug-report-tests (executable)
========================================================================================================================
Finished generating 'native-build-tools-bug-report-tests' in 3m 37s.
[native-image-plugin] Native Image written to: /Users/meletis/Code/mine/native-build-tools-bug-report/build/native/nativeTestCompile
Resolve mutations for :nativeTest (Thread[#555,Execution worker Thread 7,5,main]) started.
:nativeTest (Thread[#555,Execution worker Thread 7,5,main]) started.

> Task :nativeTest
Caching disabled for task ':nativeTest' because:
  Build cache is disabled
Task ':nativeTest' is not up-to-date because:
  Task has not declared any outputs despite executing actions.
Starting process 'command '/Users/meletis/Code/mine/native-build-tools-bug-report/build/native/nativeTestCompile/native-build-tools-bug-report-tests''. Working directory: /Users/meletis/Code/mine/native-build-tools-bug-report Command: /Users/meletis/Code/mine/native-build-tools-bug-report/build/native/nativeTestCompile/native-build-tools-bug-report-tests --xml-output-dir /Users/meletis/Code/mine/native-build-tools-bug-report/build/test-results/test-native
Successfully started process 'command '/Users/meletis/Code/mine/native-build-tools-bug-report/build/native/nativeTestCompile/native-build-tools-bug-report-tests''
JUnit Platform on Native Image - report
----------------------------------------

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
SLF4J: Failed to load class "org.slf4j.impl.StaticMDCBinder".
SLF4J: Defaulting to no-operation MDCAdapter implementation.
SLF4J: See http://www.slf4j.org/codes.html#no_static_mdc_binder for further details.
org.example.MyAppTest > testMySQLContainerIsRunning() FAILED


Failures (2):
  JUnit Jupiter:MyAppTest:testMySQLContainerIsRunning()
    MethodSource [className = 'org.example.MyAppTest', methodName = 'testMySQLContainerIsRunning', methodParameterTypes = '']
    => java.lang.ExceptionInInitializerError
       java.base@21.0.1/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:502)
       java.base@21.0.1/java.lang.reflect.Constructor.newInstance(Constructor.java:486)
       java.base@21.0.1/java.util.Optional.orElseGet(Optional.java:364)
       java.base@21.0.1/java.util.ArrayList.forEach(ArrayList.java:1596)
       java.base@21.0.1/java.util.ArrayList.forEach(ArrayList.java:1596)
     Caused by: org.testcontainers.containers.ContainerLaunchException: Container startup failed for image mysql:5.7
       org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:359)
       org.testcontainers.containers.GenericContainer.start(GenericContainer.java:334)
       org.example.MyAppTest.<clinit>(MyAppTest.java:21)
       [...]
     Caused by: java.lang.IllegalArgumentException: Resource with path db/mysql_conf_override could not be found on any of these classloaders: [jdk.internal.loader.ClassLoaders$AppClassLoader@2f7c7260]
       org.testcontainers.utility.MountableFile.getClasspathResource(MountableFile.java:158)
       org.testcontainers.utility.MountableFile.forClasspathResource(MountableFile.java:103)
       org.testcontainers.containers.JdbcDatabaseContainer.optionallyMapResourceParameterAsVolume(JdbcDatabaseContainer.java:322)
       org.testcontainers.containers.MySQLContainer.configure(MySQLContainer.java:76)
       org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:339)
       [...]
  JUnit Jupiter:MyAppTest
    ClassSource [className = 'org.example.MyAppTest', filePosition = null]
    => java.lang.NoClassDefFoundError: Could not initialize class org.example.MyAppTest
       java.base@21.0.1/java.lang.reflect.Method.invoke(Method.java:580)
       java.base@21.0.1/java.util.ArrayList.forEach(ArrayList.java:1596)
       java.base@21.0.1/java.util.Collections$UnmodifiableCollection.forEach(Collections.java:1116)
       java.base@21.0.1/java.util.ArrayList.forEach(ArrayList.java:1596)

Test run finished after 1909 ms
[         2 containers found      ]
[         0 containers skipped    ]
[         2 containers started    ]
[         0 containers aborted    ]
[         1 containers successful ]
[         1 containers failed     ]
[         1 tests found           ]
[         0 tests skipped         ]
[         1 tests started         ]
[         0 tests aborted         ]
[         0 tests successful      ]
[         1 tests failed          ]


> Task :nativeTest FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':nativeTest'.
> Process 'command '/Users/meletis/Code/mine/native-build-tools-bug-report/build/native/nativeTestCompile/native-build-tools-bug-report-tests'' finished with non-zero exit value 1

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --debug option to get more log output.
> Run with --scan to get full insights.
> Get more help at https://help.gradle.org.

BUILD FAILED in 4m
9 actionable tasks: 9 executed
Watched directory hierarchies: [/Users/meletis/Code/mine/native-build-tools-bug-report]

System Info (please complete the following information):

  • OS: macOS
  • GraalVM Version: Oracle GraalVM 21.0.1+12.1
  • Java Version: 21
  • Plugin version: native-gradle-plugin:0.9.28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

1 participant