[lworld] RFR: 8327257: [lworld] Tests are needed to stress class preloading with concurrent class loadings [v3]
Paul Hübner
phubner at openjdk.org
Wed Sep 10 10:28:57 UTC 2025
> Hi all,
>
> This change strengthens our Valhalla-specific classloading test suite and guards against regressions. An overview of the new changes is as follows:
> * `BigClassTreeClassLoader`: a utility classloader that generates huge class trees on the fly. The idea is to generate a tree that is deep (lots of parent classes) and very wide (classes have lots of value classes as fields, which have value class fields, etc.).
> * `ConcurrentClassLoadingTest` strains the classloading and preloading by classloading many classes at the same time.
> * `LoadableDescriptorsTest` ensures that the `LoadableDescriptors` attribute can handle unexpected data. This may need to be revisited if https://bugs.openjdk.org/browse/JDK-8366907 changes the semantics.
> * `PreLoadCircularityTest` ensures that preloading happens even when there are cycles (via inheritance, fields, and both).
> * `PreLoadDoesNotInitTest` is a regression test that ensures preloading will not initialize a class.
> * `PreLoadFailuresDoNotImpactApplicationTest` ensures that a flaky classloader during preloading will not cause crashes as long as the classloader can find the class when it is actually used.
> * `ValueClassInheritanceTest` is a regression test that ensures one cannot have a value class inherit from something that's not an abstract value class.
Paul Hübner has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains 12 additional commits since the last revision:
- Update tests to use JDK 26.
- Merge branch 'lworld' into JDK-8327257
- Adjust stress rate.
- Re-enable test.
- Increase concurrent loading iterations.
- Reindent.
- More reviewer comments.
- Incorporate feedback.
- Move to JUnit and refactor.
- Concurrent non-deadlocking huge tree test.
- ... and 2 more: https://git.openjdk.org/valhalla/compare/d2cb02bb...d02d931b
-------------
Changes:
- all: https://git.openjdk.org/valhalla/pull/1552/files
- new: https://git.openjdk.org/valhalla/pull/1552/files/9df98b53..d02d931b
Webrevs:
- full: https://webrevs.openjdk.org/?repo=valhalla&pr=1552&range=02
- incr: https://webrevs.openjdk.org/?repo=valhalla&pr=1552&range=01-02
Stats: 7228 lines in 277 files changed: 5061 ins; 1103 del; 1064 mod
Patch: https://git.openjdk.org/valhalla/pull/1552.diff
Fetch: git fetch https://git.openjdk.org/valhalla.git pull/1552/head:pull/1552
PR: https://git.openjdk.org/valhalla/pull/1552
More information about the valhalla-dev
mailing list