From 76032d7cd7920aee56027f88f582b36d15ebfd0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20St=C3=A4ding?= Date: Wed, 16 Nov 2022 17:06:50 +0100 Subject: [PATCH 1/2] Reset timeout before each test --- .../jagr/core/testing/JavaRuntimeTester.kt | 22 ++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/core/src/main/kotlin/org/sourcegrade/jagr/core/testing/JavaRuntimeTester.kt b/core/src/main/kotlin/org/sourcegrade/jagr/core/testing/JavaRuntimeTester.kt index 633ab815..9c39f64e 100644 --- a/core/src/main/kotlin/org/sourcegrade/jagr/core/testing/JavaRuntimeTester.kt +++ b/core/src/main/kotlin/org/sourcegrade/jagr/core/testing/JavaRuntimeTester.kt @@ -24,6 +24,8 @@ import org.apache.logging.log4j.Logger import org.junit.platform.commons.JUnitException import org.junit.platform.engine.discovery.ClassSelector import org.junit.platform.engine.discovery.DiscoverySelectors +import org.junit.platform.launcher.TestExecutionListener +import org.junit.platform.launcher.TestIdentifier import org.junit.platform.launcher.core.LauncherDiscoveryRequestBuilder import org.junit.platform.launcher.core.LauncherFactory import org.junit.platform.launcher.listeners.SummaryGeneratingListener @@ -32,10 +34,12 @@ import org.sourcegrade.jagr.api.testing.TestCycle import org.sourcegrade.jagr.core.compiler.java.RuntimeClassLoaderImpl import org.sourcegrade.jagr.core.compiler.java.plus import org.sourcegrade.jagr.core.executor.TimeoutHandler +import org.sourcegrade.jagr.launcher.env.Config class JavaRuntimeTester @Inject constructor( private val logger: Logger, private val testCycleParameterResolver: TestCycleParameterResolver, + private val config: Config, ) : RuntimeTester { override fun createTestCycle(grader: GraderJarImpl, submission: Submission): TestCycle? { if (submission !is JavaSubmission) return null @@ -86,11 +90,19 @@ class JavaRuntimeTester @Inject constructor( return try { val summaryListener = SummaryGeneratingListener() val statusListener = TestStatusListenerImpl(logger) - TimeoutHandler.setClassNames(map { it.className }) - TimeoutHandler.resetTimeout() - launcher.execute(testPlan, summaryListener, statusListener) - // if total timeout has been reached, reset so that the rubric provider doesn't throw an error - TimeoutHandler.disableTimeout() + if (config.transformers.timeout.enabled) { + val timeoutListener = object : TestExecutionListener { + override fun executionStarted(testIdentifier: TestIdentifier) { + TimeoutHandler.resetTimeout() + } + } + TimeoutHandler.setClassNames(map { it.className }) + launcher.execute(testPlan, summaryListener, statusListener, timeoutListener) + // if total timeout has been reached, reset so that the rubric provider doesn't throw an error + TimeoutHandler.disableTimeout() + } else { + launcher.execute(testPlan, summaryListener, statusListener) + } statusListener.logLinkageErrors(info) JUnitResultImpl(testPlan, summaryListener, statusListener) } catch (e: Throwable) { From 4a0be8c6538ea3bae2148c8018d408c6a95b153d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20St=C3=A4ding?= Date: Thu, 17 Nov 2022 01:29:38 +0100 Subject: [PATCH 2/2] Fix comment --- .../org/sourcegrade/jagr/core/testing/JavaRuntimeTester.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/kotlin/org/sourcegrade/jagr/core/testing/JavaRuntimeTester.kt b/core/src/main/kotlin/org/sourcegrade/jagr/core/testing/JavaRuntimeTester.kt index 9c39f64e..23ab924f 100644 --- a/core/src/main/kotlin/org/sourcegrade/jagr/core/testing/JavaRuntimeTester.kt +++ b/core/src/main/kotlin/org/sourcegrade/jagr/core/testing/JavaRuntimeTester.kt @@ -98,7 +98,7 @@ class JavaRuntimeTester @Inject constructor( } TimeoutHandler.setClassNames(map { it.className }) launcher.execute(testPlan, summaryListener, statusListener, timeoutListener) - // if total timeout has been reached, reset so that the rubric provider doesn't throw an error + // disable so that the rubric provider doesn't throw an error TimeoutHandler.disableTimeout() } else { launcher.execute(testPlan, summaryListener, statusListener)