[SPARK-26501][CORE][TEST] Fix unexpected overriden of exitFn in SparkSubmitSuite

## What changes were proposed in this pull request?

The overriden of SparkSubmit's exitFn at some previous tests in SparkSubmitSuite may cause the following tests pass even they failed when they were run separately. This PR is to fix this problem.

## How was this patch tested?

unittest

Closes #23404 from liupc/Fix-SparkSubmitSuite-exitFn.

Authored-by: Liupengcheng <liupengcheng@xiaomi.com>
Signed-off-by: Sean Owen <sean.owen@databricks.com>
This commit is contained in:
Liupengcheng 2019-01-03 10:26:14 -06:00 committed by Sean Owen
parent 2a30deb85a
commit 88b074f3f0

View file

@ -72,27 +72,31 @@ trait TestPrematureExit {
mainObject.printStream = printStream
@volatile var exitedCleanly = false
val original = mainObject.exitFn
mainObject.exitFn = (_) => exitedCleanly = true
@volatile var exception: Exception = null
val thread = new Thread {
override def run() = try {
mainObject.main(input)
} catch {
// Capture the exception to check whether the exception contains searchString or not
case e: Exception => exception = e
try {
@volatile var exception: Exception = null
val thread = new Thread {
override def run() = try {
mainObject.main(input)
} catch {
// Capture the exception to check whether the exception contains searchString or not
case e: Exception => exception = e
}
}
}
thread.start()
thread.join()
if (exitedCleanly) {
val joined = printStream.lineBuffer.mkString("\n")
assert(joined.contains(searchString))
} else {
assert(exception != null)
if (!exception.getMessage.contains(searchString)) {
throw exception
thread.start()
thread.join()
if (exitedCleanly) {
val joined = printStream.lineBuffer.mkString("\n")
assert(joined.contains(searchString))
} else {
assert(exception != null)
if (!exception.getMessage.contains(searchString)) {
throw exception
}
}
} finally {
mainObject.exitFn = original
}
}
}