From 85399bc969838f8e3e18eedf210a464f42583585 Mon Sep 17 00:00:00 2001 From: cristiangarcia Date: Wed, 7 Feb 2024 22:19:59 +0100 Subject: [PATCH] Fake service to limit tests concurrency Required for KTI-1553 --- .../src/main/kotlin/ConcurrencyLimitService.kt | 12 ++++++++++++ .../buildsrc-compat/src/main/kotlin/tasks.kt | 5 +++++ 2 files changed, 17 insertions(+) create mode 100644 repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/ConcurrencyLimitService.kt diff --git a/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/ConcurrencyLimitService.kt b/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/ConcurrencyLimitService.kt new file mode 100644 index 00000000000..8be116a43dd --- /dev/null +++ b/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/ConcurrencyLimitService.kt @@ -0,0 +1,12 @@ +import org.gradle.api.services.BuildService +import org.gradle.api.services.BuildServiceParameters + +/* + * Copyright 2010-2024 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. + */ + +abstract class ConcurrencyLimitService : BuildService { + interface Params : BuildServiceParameters + +} \ No newline at end of file diff --git a/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/tasks.kt b/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/tasks.kt index 5e2c93289a8..04d490e846c 100644 --- a/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/tasks.kt +++ b/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/tasks.kt @@ -120,6 +120,10 @@ fun Project.projectTest( defineJDKEnvVariables: List = emptyList(), body: Test.() -> Unit = {}, ): TaskProvider { + val concurrencyLimitService = + project.gradle.sharedServices.registerIfAbsent("concurrencyLimitService", ConcurrencyLimitService::class) { + maxParallelUsages = 1 + } val shouldInstrument = project.providers.gradleProperty("kotlin.test.instrumentation.disable") .orNull?.toBoolean() != true if (shouldInstrument) { @@ -202,6 +206,7 @@ fun Project.projectTest( defaultMaxMemoryPerTestWorkerMb maxHeapSize = "${memoryPerTestProcessMb}m" + usesService(concurrencyLimitService) if (minHeapSizeMb != null) { minHeapSize = "${minHeapSizeMb}m"