[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:
parent
2a30deb85a
commit
88b074f3f0
|
@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue