Skip to content

Commit

Permalink
Reset timeout before each test (#180)
Browse files Browse the repository at this point in the history
  • Loading branch information
alexstaeding committed Nov 17, 2022
1 parent 4d13e0e commit b50709e
Showing 1 changed file with 17 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand Down Expand Up @@ -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)
// disable 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) {
Expand Down

0 comments on commit b50709e

Please sign in to comment.