[LL] Add LL API module for JDK 11 tests to support Lincheck tests

- Lincheck is compiled with JDK 11 and the `low-level-api-fir` module is
  based on the JDK 8 toolchain, so we need to add a new module with a
  JDK 11 toolchain to support Lincheck tests. We cannot bump
  `low-level-api-fir` to JDK 11 because `low-level-api-fir-for-ide`
  requires it to be based on a JDK 8 toolchain.
- Using a Gradle test suite is unfortunately not an option, because
  `low-level-api-fir-for-ide` will think that the whole
  `low-level-api-fir` module is compiled with JDK 11 if just a single
  test suite has this toolchain.

^KT-62136
This commit is contained in:
Marco Pennekamp
2023-11-21 18:35:54 +01:00
committed by Space Team
parent c0c6667876
commit ee7c67ba11
6 changed files with 132 additions and 0 deletions
+1
View File
@@ -13,6 +13,7 @@ tasks.register("analysisAllTests") {
":analysis:analysis-api-fe10:test", ":analysis:analysis-api-fe10:test",
":analysis:analysis-api-standalone:test", ":analysis:analysis-api-standalone:test",
":analysis:low-level-api-fir:test", ":analysis:low-level-api-fir:test",
":analysis:low-level-api-fir:tests-jdk11:test",
":analysis:symbol-light-classes:test" ":analysis:symbol-light-classes:test"
) )
@@ -0,0 +1,37 @@
plugins {
kotlin("jvm")
id("jps-compatible")
}
dependencies {
testImplementation(libs.junit.jupiter.api)
testRuntimeOnly(libs.junit.jupiter.engine)
testImplementation(project(":analysis:analysis-api"))
testImplementation(project(":analysis:low-level-api-fir"))
testImplementation("org.jetbrains.kotlinx:lincheck:2.23")
}
sourceSets {
"test" { projectDefault() }
}
configureJvmToolchain(JdkMajorVersion.JDK_11_0)
projectTest(jUnitMode = JUnitMode.JUnit5) {
dependsOn(":dist")
workingDir = rootDir
useJUnitPlatform()
// This is required by lincheck model checking to be able to use `jdk.internal.misc.Unsafe` and similar classes under the hood.
jvmArgs(
"--add-opens",
"java.base/jdk.internal.misc=ALL-UNNAMED",
"--add-exports",
"java.base/jdk.internal.util=ALL-UNNAMED",
"--add-exports",
"java.base/sun.security.action=ALL-UNNAMED"
)
}
testsJar()
@@ -0,0 +1,32 @@
/*
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.analysis.low.level.api.fir.caches
import org.jetbrains.kotlinx.lincheck.annotations.Operation
import org.jetbrains.kotlinx.lincheck.check
import org.jetbrains.kotlinx.lincheck.strategy.managed.modelchecking.ModelCheckingOptions
import org.jetbrains.kotlinx.lincheck.strategy.stress.StressOptions
import org.junit.jupiter.api.Test
import java.util.concurrent.atomic.AtomicInteger
// This is an example Lincheck test to ensure that the test infrastructure is working. It will be replaced with proper "cleanable soft value
// cache" tests in the scope of KT-62136.
class ExampleLincheckTest {
private val c = AtomicInteger(0)
@Operation
fun inc(): Int = c.incrementAndGet()
@Operation
fun get(): Int = c.get()
@Test
fun stressTest() = StressOptions().check(this::class)
@Test
fun modelCheckingTest() = ModelCheckingOptions().check(this::class)
}
+60
View File
@@ -3488,6 +3488,12 @@
<sha256 value="711d64522f9ec410983bd310934296da134be4254a125080a0416ec178dfad1c" origin="Generated by Gradle"/> <sha256 value="711d64522f9ec410983bd310934296da134be4254a125080a0416ec178dfad1c" origin="Generated by Gradle"/>
</artifact> </artifact>
</component> </component>
<component group="org.javassist" name="javassist" version="3.26.0-GA">
<artifact name="javassist-3.26.0-GA.jar">
<md5 value="547690071a74a2aafb01896c9f42b37d" origin="Generated by Gradle"/>
<sha256 value="ca5625874ff0a34f2422173a511b33c225218c146a3c961b18940efff430462d" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.javassist" name="javassist" version="3.28.0-GA"> <component group="org.javassist" name="javassist" version="3.28.0-GA">
<artifact name="javassist-3.28.0-GA.jar"> <artifact name="javassist-3.28.0-GA.jar">
<md5 value="1a2dd8c76321cef26cc2669fe70a2557" origin="Generated by Gradle"/> <md5 value="1a2dd8c76321cef26cc2669fe70a2557" origin="Generated by Gradle"/>
@@ -3714,6 +3720,12 @@
<sha256 value="3277ac102ae17aad10a55abec75ff5696c8d109790396434b496e75087854203" origin="Generated by Gradle"/> <sha256 value="3277ac102ae17aad10a55abec75ff5696c8d109790396434b496e75087854203" origin="Generated by Gradle"/>
</artifact> </artifact>
</component> </component>
<component group="org.jetbrains.kotlin" name="kotlin-reflect" version="1.6.21">
<artifact name="kotlin-reflect-1.6.21.jar">
<md5 value="3db09afc9595efdfa2eccba08665501b" origin="Generated by Gradle"/>
<sha256 value="1e1f57209f7238c3fd1735a1b9339a56565507dca249f8371bf59d91f601aeaa" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.jetbrains.kotlin" name="kotlin-reflect" version="1.7.10"> <component group="org.jetbrains.kotlin" name="kotlin-reflect" version="1.7.10">
<artifact name="kotlin-reflect-1.7.10.jar"> <artifact name="kotlin-reflect-1.7.10.jar">
<md5 value="22aaff1245b21364e794444c9e064e0c" origin="Generated by Gradle"/> <md5 value="22aaff1245b21364e794444c9e064e0c" origin="Generated by Gradle"/>
@@ -3810,6 +3822,12 @@
<sha256 value="cde3341ba18a2ba262b0b7cf6c55b20c90e8d434e42c9a13e6a3f770db965a88" origin="Generated by Gradle"/> <sha256 value="cde3341ba18a2ba262b0b7cf6c55b20c90e8d434e42c9a13e6a3f770db965a88" origin="Generated by Gradle"/>
</artifact> </artifact>
</component> </component>
<component group="org.jetbrains.kotlin" name="kotlin-stdlib-jdk7" version="1.6.21">
<artifact name="kotlin-stdlib-jdk7-1.6.21.jar">
<md5 value="73d0db6af7445088858d51a1a6843b75" origin="Generated by Gradle"/>
<sha256 value="f1b0634dbb94172038463020bb2dd45ca26849f8ce29d625acb0f1569d11dbee" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.jetbrains.kotlin" name="kotlin-stdlib-jdk7" version="1.7.10"> <component group="org.jetbrains.kotlin" name="kotlin-stdlib-jdk7" version="1.7.10">
<artifact name="kotlin-stdlib-jdk7-1.7.10.jar"> <artifact name="kotlin-stdlib-jdk7-1.7.10.jar">
<md5 value="16e9288ff1d39c8f983507e3cd72e8a8" origin="Generated by Gradle"/> <md5 value="16e9288ff1d39c8f983507e3cd72e8a8" origin="Generated by Gradle"/>
@@ -3834,6 +3852,12 @@
<sha256 value="af1ec40c3b951afdcc0c2a0173c7b81763c5281c2d5bafbf0a8544a24c5dcc0c" origin="Generated by Gradle"/> <sha256 value="af1ec40c3b951afdcc0c2a0173c7b81763c5281c2d5bafbf0a8544a24c5dcc0c" origin="Generated by Gradle"/>
</artifact> </artifact>
</component> </component>
<component group="org.jetbrains.kotlin" name="kotlin-stdlib-jdk8" version="1.6.21">
<artifact name="kotlin-stdlib-jdk8-1.6.21.jar">
<md5 value="9e7ee18a1a5dd5bf070c7e6f706ccc9c" origin="Generated by Gradle"/>
<sha256 value="dab45489b47736d59fce44b80676f1947a9b6bcab10fd60e878a83bd82a6954c" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.jetbrains.kotlin" name="kotlin-stdlib-jdk8" version="1.7.10"> <component group="org.jetbrains.kotlin" name="kotlin-stdlib-jdk8" version="1.7.10">
<artifact name="kotlin-stdlib-jdk8-1.7.10.jar"> <artifact name="kotlin-stdlib-jdk8-1.7.10.jar">
<md5 value="83947a5800c9fae4d5e0aa15ed5f186f" origin="Generated by Gradle"/> <md5 value="83947a5800c9fae4d5e0aa15ed5f186f" origin="Generated by Gradle"/>
@@ -4060,6 +4084,12 @@
<sha256 value="58a497ab595d83bbbf28892a8b34ab57d94309a8742ee0eba43cb86408d235bf" origin="Generated by Gradle"/> <sha256 value="58a497ab595d83bbbf28892a8b34ab57d94309a8742ee0eba43cb86408d235bf" origin="Generated by Gradle"/>
</artifact> </artifact>
</component> </component>
<component group="org.jetbrains.kotlinx" name="kotlinx-coroutines-core-jvm" version="1.6.4">
<artifact name="kotlinx-coroutines-core-jvm-1.6.4.jar">
<md5 value="9ba1873872fe1406d39bc40683050c45" origin="Generated by Gradle"/>
<sha256 value="c24c8bb27bb320c4a93871501a7e5e0c61607638907b197aef675513d4c820be" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.jetbrains.kotlinx" name="kotlinx-coroutines-core-jvm" version="1.7.1"> <component group="org.jetbrains.kotlinx" name="kotlinx-coroutines-core-jvm" version="1.7.1">
<artifact name="kotlinx-coroutines-core-jvm-1.7.1.jar"> <artifact name="kotlinx-coroutines-core-jvm-1.7.1.jar">
<md5 value="a9042dc49ad3a7a589e7738729898335" origin="Generated by Gradle"/> <md5 value="a9042dc49ad3a7a589e7738729898335" origin="Generated by Gradle"/>
@@ -4240,6 +4270,18 @@
<sha256 value="682cbf020fcd0d3a047d9fe9e21c681f02daf0aa3a587f36ac26d4c435d28bee" origin="Generated by Gradle"/> <sha256 value="682cbf020fcd0d3a047d9fe9e21c681f02daf0aa3a587f36ac26d4c435d28bee" origin="Generated by Gradle"/>
</artifact> </artifact>
</component> </component>
<component group="org.jetbrains.kotlinx" name="lincheck" version="2.23">
<artifact name="lincheck-metadata-2.23.jar">
<md5 value="912a6b1128e6995b09cb65192ad64dfe" origin="Generated by Gradle"/>
<sha256 value="84ac838a5bd04c775c3dfb456c5eb3ccd20f1f358880d79331ab1b7960eceb14" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.jetbrains.kotlinx" name="lincheck-jvm" version="2.23">
<artifact name="lincheck-jvm-2.23.jar">
<md5 value="257be6c6ba50480ddf362b5f9b75b781" origin="Generated by Gradle"/>
<sha256 value="b828ef373581f811c5093a236c4aac2325a1d45389d27fce19a1da76a4998515" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.jetbrains.teamcity" name="serviceMessages" version="2019.1.4"> <component group="org.jetbrains.teamcity" name="serviceMessages" version="2019.1.4">
<artifact name="serviceMessages-2019.1.4.jar"> <artifact name="serviceMessages-2019.1.4.jar">
<md5 value="594ba870d461668b72b0bf06675bed14" origin="Generated by Gradle"/> <md5 value="594ba870d461668b72b0bf06675bed14" origin="Generated by Gradle"/>
@@ -4572,6 +4614,12 @@
<sha256 value="878fbe521731c072d14d2d65b983b1beae6ad06fda0007b6a8bae81f73f433c4" origin="Generated by Gradle"/> <sha256 value="878fbe521731c072d14d2d65b983b1beae6ad06fda0007b6a8bae81f73f433c4" origin="Generated by Gradle"/>
</artifact> </artifact>
</component> </component>
<component group="org.ow2.asm" name="asm-analysis" version="9.4">
<artifact name="asm-analysis-9.4.jar">
<md5 value="707cb3616c99af872dcdd00801723600" origin="Generated by Gradle"/>
<sha256 value="7b5f8c5e3bf341b5bb570d26f379e3fdebdc32732187159c42479164053f373d" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.ow2.asm" name="asm-commons" version="6.0"> <component group="org.ow2.asm" name="asm-commons" version="6.0">
<artifact name="asm-commons-6.0.jar"> <artifact name="asm-commons-6.0.jar">
<md5 value="cbe9c8e4ed2a7e27de503b43f6dc4d61" origin="Generated by Gradle"/> <md5 value="cbe9c8e4ed2a7e27de503b43f6dc4d61" origin="Generated by Gradle"/>
@@ -4614,6 +4662,12 @@
<sha256 value="ff5b3cd331ae8a9a804768280da98f50f424fef23dd3c788bb320e08c94ee598" origin="Generated by Gradle"/> <sha256 value="ff5b3cd331ae8a9a804768280da98f50f424fef23dd3c788bb320e08c94ee598" origin="Generated by Gradle"/>
</artifact> </artifact>
</component> </component>
<component group="org.ow2.asm" name="asm-util" version="9.4">
<artifact name="asm-util-9.4.jar">
<md5 value="3e671d779360f8053109ab99ee169915" origin="Generated by Gradle"/>
<sha256 value="3d7932b93ff55056641e7cfb601f96bcd5cd071e1b0503c78a5014232297a23e" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.projectlombok" name="lombok" version="1.18.16"> <component group="org.projectlombok" name="lombok" version="1.18.16">
<artifact name="lombok-1.18.16.jar"> <artifact name="lombok-1.18.16.jar">
<md5 value="fca4ae86d65bc29ad22cb971bd3e3700" origin="Generated by Gradle"/> <md5 value="fca4ae86d65bc29ad22cb971bd3e3700" origin="Generated by Gradle"/>
@@ -4626,6 +4680,12 @@
<sha256 value="938a2d08fe54050d7610b944d8ddc3a09355710d9e6be0aac838dbc04e9a2825" origin="Generated by Gradle"/> <sha256 value="938a2d08fe54050d7610b944d8ddc3a09355710d9e6be0aac838dbc04e9a2825" origin="Generated by Gradle"/>
</artifact> </artifact>
</component> </component>
<component group="org.reflections" name="reflections" version="0.9.12">
<artifact name="reflections-0.9.12.jar">
<md5 value="59386d63f168cbabb61cdece9fdd55a6" origin="Generated by Gradle"/>
<sha256 value="d168f58d32f2ae7ac5a8d5d9092adeee526c604b41125dcb45eea877960a99cf" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.robolectric" name="android-all" version="5.0.2_r3-robolectric-r0"> <component group="org.robolectric" name="android-all" version="5.0.2_r3-robolectric-r0">
<artifact name="android-all-5.0.2_r3-robolectric-r0.jar"> <artifact name="android-all-5.0.2_r3-robolectric-r0.jar">
<md5 value="6b57219b0d85fe3131f9628c454ca616" origin="Generated by Gradle"/> <md5 value="6b57219b0d85fe3131f9628c454ca616" origin="Generated by Gradle"/>
@@ -5,6 +5,7 @@ plugins {
val testModules = listOf( val testModules = listOf(
":analysis:analysis-api-fir", ":analysis:analysis-api-fir",
":analysis:low-level-api-fir", ":analysis:low-level-api-fir",
":analysis:low-level-api-fir:tests-jdk11",
":analysis:analysis-test-framework", ":analysis:analysis-test-framework",
":analysis:analysis-api-impl-barebone", ":analysis:analysis-api-impl-barebone",
":analysis:analysis-api-impl-base", ":analysis:analysis-api-impl-base",
+1
View File
@@ -562,6 +562,7 @@ include ":jps:jps-common",
include ":generators:analysis-api-generator", include ":generators:analysis-api-generator",
":analysis", ":analysis",
":analysis:low-level-api-fir", ":analysis:low-level-api-fir",
":analysis:low-level-api-fir:tests-jdk11",
":analysis:analysis-api-fir:analysis-api-fir-generator", ":analysis:analysis-api-fir:analysis-api-fir-generator",
":analysis:analysis-api-fir", ":analysis:analysis-api-fir",
":analysis:analysis-api", ":analysis:analysis-api",