diff options
author | Vadim Mishenev <vad-mishenev@yandex.ru> | 2022-11-26 01:11:53 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-11-26 01:11:53 +0200 |
commit | 9ed17b64f0dd071afaa4f2e9c507937c4e9571d2 (patch) | |
tree | f218bedc28f66e1f7d803eae99c0ed1d5ac5cb84 /integration-tests/gradle/src/integrationTest/kotlin | |
parent | dc1f9d20f599ca8f9311b779645bc5e53784ca92 (diff) | |
download | dokka-9ed17b64f0dd071afaa4f2e9c507937c4e9571d2.tar.gz dokka-9ed17b64f0dd071afaa4f2e9c507937c4e9571d2.tar.bz2 dokka-9ed17b64f0dd071afaa4f2e9c507937c4e9571d2.zip |
Fix OOME: Metaspace (#2678)
* Fix OOME: Metaspace
* Add stress test
* Run sample analysis from `Dispatchers.Default`
Diffstat (limited to 'integration-tests/gradle/src/integrationTest/kotlin')
2 files changed, 46 insertions, 0 deletions
diff --git a/integration-tests/gradle/src/integrationTest/kotlin/org/jetbrains/dokka/it/gradle/SequentialTasksExecutionStressTest.kt b/integration-tests/gradle/src/integrationTest/kotlin/org/jetbrains/dokka/it/gradle/SequentialTasksExecutionStressTest.kt new file mode 100644 index 00000000..32ed27f4 --- /dev/null +++ b/integration-tests/gradle/src/integrationTest/kotlin/org/jetbrains/dokka/it/gradle/SequentialTasksExecutionStressTest.kt @@ -0,0 +1,45 @@ +package org.jetbrains.dokka.it.gradle + +import org.gradle.testkit.runner.TaskOutcome +import org.junit.runners.Parameterized.Parameters +import java.io.File +import kotlin.test.* + +/** + * Creates 100 tasks for the test project and runs them sequentially under low memory settings. + * + * If the test passes, it's likely there are no noticeable memory leaks. + * If it fails, it's likely that memory is leaking somewhere. + */ +class SequentialTasksExecutionStressTest(override val versions: BuildVersions) : AbstractGradleIntegrationTest() { + + companion object { + @get:JvmStatic + @get:Parameters(name = "{0}") + val versions = listOf(TestedVersions.LATEST) + } + + @BeforeTest + fun prepareProjectFiles() { + val templateProjectDir = File("projects", "it-sequential-tasks-execution-stress") + + templateProjectDir.listFiles().orEmpty() + .filter { it.isFile } + .forEach { topLevelFile -> topLevelFile.copyTo(File(projectDir, topLevelFile.name)) } + + File(templateProjectDir, "src").copyRecursively(File(projectDir, "src")) + } + + @Test + fun execute() { + val result = createGradleRunner( + "runTasks", + "--info", + "--stacktrace", + "-Ptask_number=100", + jvmArgs = listOf("-Xmx1G", "-XX:MaxMetaspaceSize=350m") + ).buildRelaxed() + + assertEquals(TaskOutcome.SUCCESS, assertNotNull(result.task(":runTasks")).outcome) + } +} diff --git a/integration-tests/gradle/src/integrationTest/kotlin/org/jetbrains/dokka/it/gradle/TestedVersions.kt b/integration-tests/gradle/src/integrationTest/kotlin/org/jetbrains/dokka/it/gradle/TestedVersions.kt index b6f2abd3..2b8e5b3c 100644 --- a/integration-tests/gradle/src/integrationTest/kotlin/org/jetbrains/dokka/it/gradle/TestedVersions.kt +++ b/integration-tests/gradle/src/integrationTest/kotlin/org/jetbrains/dokka/it/gradle/TestedVersions.kt @@ -2,6 +2,7 @@ package org.jetbrains.dokka.it.gradle internal object TestedVersions { + val LATEST = BuildVersions("7.4.2", "1.7.20") val BASE = BuildVersions.permutations( gradleVersions = listOf("7.4.2", "6.9"), |