summaryrefslogtreecommitdiff
path: root/src/partest
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2010-02-25 02:53:35 +0000
committerPaul Phillips <paulp@improving.org>2010-02-25 02:53:35 +0000
commitebe8a875e57bf562d152519a274e644268c24ecc (patch)
tree9935b8989c0069e0335a5969f5cef1d2e1a0454e /src/partest
parent8a36e97b1097cd1fd610979382cf2374b26387dc (diff)
downloadscala-ebe8a875e57bf562d152519a274e644268c24ecc.tar.gz
scala-ebe8a875e57bf562d152519a274e644268c24ecc.tar.bz2
scala-ebe8a875e57bf562d152519a274e644268c24ecc.zip
Some debugging code for partest.
timings on all the individual tests and prints it sorted by glacialness. Review by community.
Diffstat (limited to 'src/partest')
-rw-r--r--src/partest/scala/tools/partest/nest/ConsoleRunner.scala2
-rw-r--r--src/partest/scala/tools/partest/nest/DirectRunner.scala4
-rw-r--r--src/partest/scala/tools/partest/nest/FileManager.scala9
-rw-r--r--src/partest/scala/tools/partest/nest/Worker.scala10
4 files changed, 23 insertions, 2 deletions
diff --git a/src/partest/scala/tools/partest/nest/ConsoleRunner.scala b/src/partest/scala/tools/partest/nest/ConsoleRunner.scala
index 64301f270f..fd25a9c8f3 100644
--- a/src/partest/scala/tools/partest/nest/ConsoleRunner.scala
+++ b/src/partest/scala/tools/partest/nest/ConsoleRunner.scala
@@ -185,7 +185,7 @@ class ConsoleRunner extends DirectRunner {
NestUI.failure("invalid test file: "+firstName+"\n")
Predef.exit(1)
} else {
- val short = firstName.substring(filesPos+len+1, filesPos+len+1+3)
+ val short = firstName drop (filesPos + len + 1) take 3
val shortKinds = List("pos", "neg", "run", "jvm", "res")
if (shortKinds contains short) short
else short match {
diff --git a/src/partest/scala/tools/partest/nest/DirectRunner.scala b/src/partest/scala/tools/partest/nest/DirectRunner.scala
index 1dd0d5a9aa..f774320f4e 100644
--- a/src/partest/scala/tools/partest/nest/DirectRunner.scala
+++ b/src/partest/scala/tools/partest/nest/DirectRunner.scala
@@ -61,6 +61,10 @@ trait DirectRunner {
results += ("worker timed out; adding failed test" -> 2)
}
}
+
+ if (isPartestDebug)
+ fileManager.showTestTimings()
+
if (!isPartestDebug) {
for (x <- logsToDelete ::: outdirsToDelete) {
NestUI.verbose("deleting "+x)
diff --git a/src/partest/scala/tools/partest/nest/FileManager.scala b/src/partest/scala/tools/partest/nest/FileManager.scala
index 88d6ab9289..092b9ccba7 100644
--- a/src/partest/scala/tools/partest/nest/FileManager.scala
+++ b/src/partest/scala/tools/partest/nest/FileManager.scala
@@ -13,6 +13,7 @@ import java.io.{File, FilenameFilter, IOException, StringWriter,
FileReader, PrintWriter, FileWriter}
import java.net.URI
import scala.tools.nsc.io.{ Path, Directory }
+import scala.collection.mutable.HashMap
trait FileManager {
/**
@@ -49,6 +50,14 @@ trait FileManager {
var JAVA_OPTS = PartestDefaults.javaOpts
var timeout = PartestDefaults.timeout
+ /** Only when --debug is given. */
+ lazy val testTimings = new HashMap[String, Long]
+ def recordTestTiming(name: String, milliseconds: Long) =
+ synchronized { testTimings(name) = milliseconds }
+ def showTestTimings() {
+ testTimings.toList sortBy (-_._2) foreach { case (k, v) => println("%s: %s".format(k, v)) }
+ }
+
def getLogFile(dir: File, fileBase: String, kind: String): LogFile =
new LogFile(dir, fileBase + "-" + kind + ".log")
diff --git a/src/partest/scala/tools/partest/nest/Worker.scala b/src/partest/scala/tools/partest/nest/Worker.scala
index b0c26aaeb7..2e2bcf2271 100644
--- a/src/partest/scala/tools/partest/nest/Worker.scala
+++ b/src/partest/scala/tools/partest/nest/Worker.scala
@@ -346,7 +346,15 @@ class Worker(val fileManager: FileManager) extends Actor {
// run test-specific code
try {
- script(logFile, outDir)
+ if (isPartestDebug) {
+ val t1 = System.currentTimeMillis
+ script(logFile, outDir)
+ val t2 = System.currentTimeMillis
+ fileManager.recordTestTiming(file.getPath, t2 - t1)
+ }
+ else {
+ script(logFile, outDir)
+ }
} catch {
case e: Exception =>
val writer = new PrintWriter(new FileWriter(logFile), true)