Revert "Add timeout to scripted statements"

This reverts commit 155526fb11.
This commit is contained in:
Eugene Yokota 2023-07-23 00:59:44 -04:00
parent fe4c5159a1
commit d5cde98654
2 changed files with 22 additions and 39 deletions

View File

@ -9,10 +9,8 @@
package sbt
package scriptedtest
import java.util.concurrent.{ Executors, TimeUnit, TimeoutException }
import scala.collection.mutable
import scala.concurrent.duration._
import sbt.internal.scripted._
private[sbt] object BatchScriptRunner {
@ -20,9 +18,8 @@ private[sbt] object BatchScriptRunner {
}
/** Defines an alternative script runner that allows batch execution. */
private[sbt] class BatchScriptRunner extends ScriptRunner with AutoCloseable {
private[sbt] class BatchScriptRunner extends ScriptRunner {
import BatchScriptRunner.States
private[this] val service = Executors.newCachedThreadPool()
/** Defines a method to run batched execution.
*
@ -44,35 +41,26 @@ private[sbt] class BatchScriptRunner extends ScriptRunner with AutoCloseable {
}
}
private val timeout = 5.minutes
def processStatement(handler: StatementHandler, statement: Statement, states: States): Unit = {
val state = states(handler).asInstanceOf[handler.State]
val nextStateFuture = service.submit(
() =>
try Right(handler(statement.command, statement.arguments, state))
catch { case e: Exception => Left(e) }
)
try {
nextStateFuture.get(timeout.toMillis, TimeUnit.MILLISECONDS) match {
case Left(err) =>
if (statement.successExpected) {
err match {
case t: TestFailed =>
throw new TestException(statement, "Command failed: " + t.getMessage, null)
case _ => throw new TestException(statement, "Command failed", err)
}
} else
()
case Right(s) =>
if (statement.successExpected)
states(handler) = s
else
throw new TestException(statement, "Command succeeded but failure was expected", null)
}
} catch {
case e: TimeoutException => throw new TestException(statement, "Command timed out", e)
val nextState =
try Right(handler(statement.command, statement.arguments, state))
catch { case e: Exception => Left(e) }
nextState match {
case Left(err) =>
if (statement.successExpected) {
err match {
case t: TestFailed =>
throw new TestException(statement, "Command failed: " + t.getMessage, null)
case _ => throw new TestException(statement, "Command failed", err)
}
} else
()
case Right(s) =>
if (statement.successExpected)
states(handler) = s
else
throw new TestException(statement, "Command succeeded but failure was expected", null)
}
}
override def close(): Unit = service.shutdown()
}

View File

@ -69,8 +69,7 @@ final class ScriptedTests(
val handlers = createScriptedHandlers(testDirectory, buffer, prop)
val runner = new BatchScriptRunner
val states = new mutable.HashMap[StatementHandler, StatementHandler#State]()
try commonRunTest(label, testDirectory, prescripted, handlers, runner, states, buffer)
finally runner.close()
commonRunTest(label, testDirectory, prescripted, handlers, runner, states, buffer)
}
runOrHandleDisabled(label, testDirectory, singleTestRunner, buffer)
}
@ -260,10 +259,7 @@ final class ScriptedTests(
}
try runBatchTests
finally {
runner.cleanUpHandlers(seqHandlers, states)
runner.close()
}
finally runner.cleanUpHandlers(seqHandlers, states)
}
private def runOrHandleDisabled(
@ -316,7 +312,6 @@ final class ScriptedTests(
case null | _: SocketException => log.error(s" Cause of test exception: ${t.getMessage}")
case _ => if (!pending) t.printStackTrace()
}
log.play()
}
if (pending) None else Some(label)
}