aboutsummaryrefslogtreecommitdiff
path: root/core/src/test/scala/org/apache/spark/util/ThreadUtilsSuite.scala
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/test/scala/org/apache/spark/util/ThreadUtilsSuite.scala')
-rw-r--r--core/src/test/scala/org/apache/spark/util/ThreadUtilsSuite.scala24
1 files changed, 23 insertions, 1 deletions
diff --git a/core/src/test/scala/org/apache/spark/util/ThreadUtilsSuite.scala b/core/src/test/scala/org/apache/spark/util/ThreadUtilsSuite.scala
index 8c51e6b14b..620e4debf4 100644
--- a/core/src/test/scala/org/apache/spark/util/ThreadUtilsSuite.scala
+++ b/core/src/test/scala/org/apache/spark/util/ThreadUtilsSuite.scala
@@ -20,8 +20,9 @@ package org.apache.spark.util
import java.util.concurrent.{CountDownLatch, TimeUnit}
-import scala.concurrent.{Await, Future}
import scala.concurrent.duration._
+import scala.concurrent.{Await, Future}
+import scala.util.Random
import org.apache.spark.SparkFunSuite
@@ -66,4 +67,25 @@ class ThreadUtilsSuite extends SparkFunSuite {
val futureThreadName = Await.result(f, 10.seconds)
assert(futureThreadName === callerThreadName)
}
+
+ test("runInNewThread") {
+ import ThreadUtils._
+ assert(runInNewThread("thread-name") { Thread.currentThread().getName } === "thread-name")
+ assert(runInNewThread("thread-name") { Thread.currentThread().isDaemon } === true)
+ assert(
+ runInNewThread("thread-name", isDaemon = false) { Thread.currentThread().isDaemon } === false
+ )
+ val uniqueExceptionMessage = "test" + Random.nextInt()
+ val exception = intercept[IllegalArgumentException] {
+ runInNewThread("thread-name") { throw new IllegalArgumentException(uniqueExceptionMessage) }
+ }
+ assert(exception.asInstanceOf[IllegalArgumentException].getMessage === uniqueExceptionMessage)
+ assert(exception.getStackTrace.mkString("\n").contains(
+ "... run in separate thread using org.apache.spark.util.ThreadUtils ...") === true,
+ "stack trace does not contain expected place holder"
+ )
+ assert(exception.getStackTrace.mkString("\n").contains("ThreadUtils.scala") === false,
+ "stack trace contains unexpected references to ThreadUtils"
+ )
+ }
}