diff --git a/pom.xml b/pom.xml
index d53cfb58f3..9007c33300 100644
--- a/pom.xml
+++ b/pom.xml
@@ -210,6 +210,11 @@
+ localhost:0
+ y
+ y
+ false
+
org.sparkproject
@@ -3443,5 +3448,14 @@
+
+ jdwp-test-debug
+
+ -agentlib:jdwp=transport=dt_socket,suspend=${test.jdwp.suspend},server=${test.jdwp.server},address=${test.jdwp.address}
+ ${jdwp.arg.line}
+ ${jdwp.arg.line}
+ ${test.debug.suite}
+
+
diff --git a/project/SparkBuild.scala b/project/SparkBuild.scala
index 4d7debffab..9b28205689 100644
--- a/project/SparkBuild.scala
+++ b/project/SparkBuild.scala
@@ -97,6 +97,9 @@ object SparkBuild extends PomBuild {
case Some(v) =>
v.split("(\\s+|,)").filterNot(_.isEmpty).map(_.trim.replaceAll("-P", "")).toSeq
}
+ if (profiles.contains("jdwp-test-debug")) {
+ sys.props.put("test.jdwp.enabled", "true")
+ }
profiles
}
@@ -1071,6 +1074,19 @@ object TestSettings {
javaOptions in Test ++= "-Xmx4g -Xss4m -XX:+UseParallelGC -XX:-UseDynamicNumberOfGCThreads"
.split(" ").toSeq,
javaOptions += "-Xmx3g",
+ javaOptions in Test ++= {
+ val jdwpEnabled = sys.props.getOrElse("test.jdwp.enabled", "false").toBoolean
+
+ if (jdwpEnabled) {
+ val jdwpAddr = sys.props.getOrElse("test.jdwp.address", "localhost:0")
+ val jdwpServer = sys.props.getOrElse("test.jdwp.server", "y")
+ val jdwpSuspend = sys.props.getOrElse("test.jdwp.suspend", "y")
+ ("-agentlib:jdwp=transport=dt_socket," +
+ s"suspend=$jdwpSuspend,server=$jdwpServer,address=$jdwpAddr").split(" ").toSeq
+ } else {
+ Seq.empty
+ }
+ },
// Exclude tags defined in a system property
testOptions in Test += Tests.Argument(TestFrameworks.ScalaTest,
sys.props.get("test.exclude.tags").map { tags =>