diff options
author | Paul Phillips <paulp@improving.org> | 2010-02-25 02:53:35 +0000 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2010-02-25 02:53:35 +0000 |
commit | ebe8a875e57bf562d152519a274e644268c24ecc (patch) | |
tree | 9935b8989c0069e0335a5969f5cef1d2e1a0454e | |
parent | 8a36e97b1097cd1fd610979382cf2374b26387dc (diff) | |
download | scala-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.
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) |