On Tue, 15 Aug 2023 19:13:31 GMT, Christoph <d...@openjdk.org> wrote:
>> Add new test case with sample modules that contains some >> requires/exports/uses/provides. >> >> We are just unsure if and how we should add some last step of verificaiton >> with the extracted and decompiled class. >> >> Follow up task from https://github.com/openjdk/jdk/pull/14408 > > Christoph has updated the pull request incrementally with two additional > commits since the last revision: > > - Add another required transitive desktop > > Assert number of module description generated sub modules > > Co-authored-by: Oliver Kopp <kopp....@gmail.com> > - Add copyright header and apply some formatting > Revert unnecesary CompilerUtil Looks good. Since the image is created with batchSize = 1, it means that one `subX` method is created for each module linked in the image. So the test can count the number of modules in the image and the number of `subX` methods should match the module count. I include the suggested code to check that. test/jdk/tools/jlink/JLinkDedupTestBatchSizeOne.java line 38: > 36: /* > 37: * @test > 38: * @summary Make sure that modules can be linked using jlink and > deduplication works correctly when creating sub methods please wrap this long line. test/jdk/tools/jlink/JLinkDedupTestBatchSizeOne.java line 94: > 92: .addMods("m1") > 93: .addMods("m2") > 94: .addMods("m2") `m2` is added twice. The duplicated line should be removed. test/jdk/tools/jlink/JLinkDedupTestBatchSizeOne.java line 116: > 114: > 115: extractJImage(image); > 116: decompileWitJavap(image); No needed. These 2 lines along with the methods can be deleted. test/jdk/tools/jlink/dedup/src/m1/p1/AInterface.java line 1: > 1: package p1; missing copyright header. test/jdk/tools/jlink/dedup/src/m4/p4/Main.java line 43: > 41: } > 42: var moduleClass = > Class.forName("jdk.internal.module.SystemModules$all"); > 43: long subMethodCount = > Arrays.stream(moduleClass.getDeclaredMethods()).filter(method -> > method.getName().startsWith("sub")).count(); nit: wrap long line Suggestion: long subMethodCount = Arrays.stream(moduleClass.getDeclaredMethods()) .filter(method -> method.getName().startsWith("sub")) .count(); test/jdk/tools/jlink/dedup/src/m4/p4/Main.java line 47: > 45: if (subMethodCount != MODULE_SUB_METHOD_COUNT) { > 46: throw new AssertionError("Difference in generated sub module > methods count! Expected: " + MODULE_SUB_METHOD_COUNT + " but was " + > subMethodCount); > 47: } Suggestion: // one subX method per each module is generated as the image is linked with // --system-modules=batchSize=1 var moduleCount = ModuleFinder.ofSystem().findAll().stream().count(); if (subMethodCount != moduleCount) { throw new AssertionError("Difference in generated sub module methods count! Expected: " + moduleCount + " but was " + subMethodCount); } ------------- PR Review: https://git.openjdk.org/jdk/pull/15234#pullrequestreview-1579273111 PR Review Comment: https://git.openjdk.org/jdk/pull/15234#discussion_r1295023900 PR Review Comment: https://git.openjdk.org/jdk/pull/15234#discussion_r1295023665 PR Review Comment: https://git.openjdk.org/jdk/pull/15234#discussion_r1295022781 PR Review Comment: https://git.openjdk.org/jdk/pull/15234#discussion_r1295024085 PR Review Comment: https://git.openjdk.org/jdk/pull/15234#discussion_r1295029909 PR Review Comment: https://git.openjdk.org/jdk/pull/15234#discussion_r1295025060