From 807c0858d663348d4f8da1c096e8677ac5866697 Mon Sep 17 00:00:00 2001 From: Robert Stupp Date: Fri, 24 Oct 2025 16:42:46 +0200 Subject: [PATCH 1/2] Build: Capture jcstress output in a log file The jcstress output is pretty verbose and prints a lot to the console. This change captures the output in a log file. In case of a test failure, the output is logged to the console, but only in case of a failure. --- persistence/nosql/idgen/impl/build.gradle.kts | 25 ++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/persistence/nosql/idgen/impl/build.gradle.kts b/persistence/nosql/idgen/impl/build.gradle.kts index 1b7e6cf1bd..9674db23be 100644 --- a/persistence/nosql/idgen/impl/build.gradle.kts +++ b/persistence/nosql/idgen/impl/build.gradle.kts @@ -17,6 +17,10 @@ * under the License. */ +import com.github.erizo.gradle.JcstressTask +import java.io.FileOutputStream +import java.nio.file.Files + plugins { id("org.kordamp.gradle.jandex") alias(libs.plugins.jmh) @@ -72,7 +76,7 @@ tasks.named("check") { dependsOn("jcstress") } jcstress { jcstressDependency = libs.jcstress.core.get().toString() } -tasks.named("jcstress") { +tasks.named("jcstress") { inputs.properties( System.getProperties() .mapKeys { it.key.toString() } @@ -85,4 +89,23 @@ tasks.named("jcstress") { inputs.files(jcstressRuntime) inputs.files(configurations.runtimeClasspath) outputs.dir(layout.buildDirectory.dir("reports/jcstress")) + + // Capture jcstress output in a log file, dump that in case of a failure. + + val logDir = project.layout.buildDirectory.dir("reports/jcstress").get().asFile + val logFile = File(logDir, "jcstress.log") + var logStream: FileOutputStream? = null + + actions.addFirst { + logStream = FileOutputStream(logFile) + standardOutput = logStream + errorOutput = logStream + } + + actions.addLast { + logStream?.close() + if (state.failure != null) { + logger.error("jcstress output\n{}", Files.readString(logFile.toPath())) + } + } } From 6bb26922ad4827371e83a9fc631de658ca387f86 Mon Sep 17 00:00:00 2001 From: Robert Stupp Date: Fri, 24 Oct 2025 17:43:02 +0200 Subject: [PATCH 2/2] -D flag --- persistence/nosql/idgen/impl/build.gradle.kts | 28 ++++++++++--------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/persistence/nosql/idgen/impl/build.gradle.kts b/persistence/nosql/idgen/impl/build.gradle.kts index 9674db23be..24599ae09e 100644 --- a/persistence/nosql/idgen/impl/build.gradle.kts +++ b/persistence/nosql/idgen/impl/build.gradle.kts @@ -90,22 +90,24 @@ tasks.named("jcstress") { inputs.files(configurations.runtimeClasspath) outputs.dir(layout.buildDirectory.dir("reports/jcstress")) - // Capture jcstress output in a log file, dump that in case of a failure. + if (!System.getProperty("jcstress-no-capture").toBoolean()) { + // Capture jcstress output in a log file, dump that in case of a failure. - val logDir = project.layout.buildDirectory.dir("reports/jcstress").get().asFile - val logFile = File(logDir, "jcstress.log") - var logStream: FileOutputStream? = null + val logDir = project.layout.buildDirectory.dir("reports/jcstress").get().asFile + val logFile = File(logDir, "jcstress.log") + var logStream: FileOutputStream? = null - actions.addFirst { - logStream = FileOutputStream(logFile) - standardOutput = logStream - errorOutput = logStream - } + actions.addFirst { + logStream = FileOutputStream(logFile) + standardOutput = logStream + errorOutput = logStream + } - actions.addLast { - logStream?.close() - if (state.failure != null) { - logger.error("jcstress output\n{}", Files.readString(logFile.toPath())) + actions.addLast { + logStream?.close() + if (state.failure != null) { + logger.error("jcstress output\n{}", Files.readString(logFile.toPath())) + } } } }