Skip to content

wilsonrf/spring-aot-smoke-tests

 
 

Repository files navigation

Spring AOT Smoke Tests

A suite of tests for applications using AOT on the JVM and in GraalVM native images. There are two types of tests: unit tests and application tests.

Unit tests are processed ahead of time and are then either run on the JVM or as a native executable. Unit tests can be run on the JVM using the test task and as a native executable using the nativeTest task.

Application tests are always executed on the JVM against an application that’s running on the JVM or as a native executable. The appTest task tests the application running on the JVM.The nativeAppTest task tests the application running as a native executable.

Contributing

Please read and follow the contributing guide.

How to

Run all of a project’s smoke tests

./gradlew :<name of the group>:<name of the smoke test>:build

for example

./gradlew :boot:actuator-webmvc:build

Run a specific type of tests for a project

./gradlew :<name of the group>:<name of the smoke test>:<test task name>

Valid test task names are:

  1. appTest – tests the application running on the JVM

  2. nativeAppTest – tests the application running as a native executable

  3. test – executes the AOT-processed unit tests on the JVM

  4. nativeTest – executes the AOT-processed unit tests in a native executable

for example

./gradlew :boot:actuator-webmvc:appTest

Add a new smoke test

  1. Create a new directory for your smoke test in the appropriate group

  2. Include the directory in settings.gradle

  3. Run ./gradlew updateInfrastructure to add the smoke test to the status page and CI pipeline

Test against local changes

Your project uses Gradle

./gradlew :<name of the group>:<name of the smoke test>:build --include-build /path/to/your/project

Gradle will then substitute the dependency with your provided version.

Hint: You can use --include-build multiple times.

Your project uses Maven or --include-build does not work

First, install the snapshots into your local Maven cache. You can now consume those snapshots using -PfromMavenLocal which takes a comma-separated list of group IDs:

./gradlew :rest-template:build -PfromMavenLocal=org.springframework,org.springframework.data

The preceding example will run the rest-template smoke test, resolving Spring Framework and Spring Data modules from your local Maven cache.

Override a dependency version

As the test doesn’t use the Spring Dependency Management Plugin, you can’t use the ext['…​'] = '…​' method.

Instead, use Gradle dependency constraints. Say, for example, you want to update the version of Spring Session JDBC to 3.0.0-SNAPSHOT:

dependencies {
    // ...
    constraints {
        implementation('org.springframework.session:spring-session-jdbc:3.0.0-SNAPSHOT')
    }
}

This works for direct and transitive dependencies.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 96.7%
  • Kotlin 2.0%
  • Other 1.3%