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 =>