summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authormichelou <michelou@epfl.ch>2007-09-27 16:38:24 +0000
committermichelou <michelou@epfl.ch>2007-09-27 16:38:24 +0000
commit9f847abf34ae332760f59a8a0131c003d2959344 (patch)
tree98651d0109776e299b26383523e1bc573d568f41 /src
parent1b41795f5117ddac2730d4ce5d5e393b736010b6 (diff)
downloadscala-9f847abf34ae332760f59a8a0131c003d2959344.tar.gz
scala-9f847abf34ae332760f59a8a0131c003d2959344.tar.bz2
scala-9f847abf34ae332760f59a8a0131c003d2959344.zip
fixed #99, fixed order of worker queue
Diffstat (limited to 'src')
-rw-r--r--src/library/scala/testing/SUnit.scala14
-rw-r--r--src/partest/scala/tools/partest/MasterActor.scala40
2 files changed, 24 insertions, 30 deletions
diff --git a/src/library/scala/testing/SUnit.scala b/src/library/scala/testing/SUnit.scala
index 115a75959d..7ab963a3be 100644
--- a/src/library/scala/testing/SUnit.scala
+++ b/src/library/scala/testing/SUnit.scala
@@ -90,9 +90,9 @@ object SUnit {
}
}
- def setUp() = {}
+ def setUp() {}
- def tearDown() = {}
+ def tearDown() {}
override def toString() = name
}
@@ -115,8 +115,9 @@ object SUnit {
class TestResult {
val buf = new ArrayBuffer[(Test, Throwable)]()
- def addFailure(test:Test, t:Throwable) =
+ def addFailure(test: Test, t: Throwable) {
buf += (test, t)
+ }
def failureCount() =
buf.length
@@ -136,8 +137,9 @@ object SUnit {
buf ++= tests
- def addTest(t: Test) =
+ def addTest(t: Test) {
buf += t
+ }
def run(r: TestResult) {
for (t <- buf) t.run(r)
@@ -146,10 +148,10 @@ object SUnit {
/** an AssertFailed is thrown for a failed assertion */
case class AssertFailed(msg: String) extends RuntimeException {
- override def toString() = "failed assertion:" + msg
+ override def toString() = "failed assertion: " + msg
}
- /** this class defined useful assert methods */
+ /** this class defined useful <code>assert</code> methods */
trait Assert {
/** fails if expected != actual */
diff --git a/src/partest/scala/tools/partest/MasterActor.scala b/src/partest/scala/tools/partest/MasterActor.scala
index 77924a73b5..90c081418f 100644
--- a/src/partest/scala/tools/partest/MasterActor.scala
+++ b/src/partest/scala/tools/partest/MasterActor.scala
@@ -15,6 +15,7 @@ import java.io.{File, FileOutputStream, PrintStream}
import javax.swing.Timer
import scala.actors.Actor
+import scala.collection.mutable.SynchronizedQueue
import scala.tools.nsc.Settings
import utils.PrintMgr._
@@ -40,7 +41,6 @@ class MasterActor(testDir: File, out: PrintStream) extends Actor {
//private var numOfActors = Math.min(4, Math.max(Integer.parseInt(System.getProperty("actors.maxPoolSize")),
private val numOfActors = 4
- //println("Starting with " + numOfActors + " actors...")
private var workers = (for (i <- 0 until numOfActors) yield (new WorkerActor(this, new Settings(x => ()), new ExtConsoleReporter(globalSettings)), i)).toList
@@ -48,7 +48,7 @@ class MasterActor(testDir: File, out: PrintStream) extends Actor {
private var timers = (for (i <- 0 until numOfActors) yield createTimer(workers(i)._1)).toList
- private var testsToRun: List[Test] = List()
+ private var testsToRun = new SynchronizedQueue[Test]
private var failedTests: List[Test] = List()
@@ -88,32 +88,24 @@ class MasterActor(testDir: File, out: PrintStream) extends Actor {
newWorker ! (test, true, conservative)
}
- private def hasNextTest = !testsToRun.isEmpty
-
- private def nextTest(): Test = {
- val test = testsToRun.head
- testsToRun = testsToRun.tail
- test
- }
-
def act() {
loop {
react {
- case (test: Test) =>
- testsToRun = test :: testsToRun
+ case test: Test =>
+ testsToRun += test
case ("start", conservative: Boolean) =>
this.conservative = conservative
- workers foreach ((x) => {
- if (hasNextTest) {
- x._1.start
- val test = nextTest()
- // TODO Change here should be x._1 ! (test, false, conservative)
- x._1 ! (test, false, conservative)
- timers(x._2).start
- workingOn = (x._2, test) :: workingOn
- }
- })
+ workers foreach (x => {
+ if (!testsToRun.isEmpty) {
+ x._1.start
+ val test = testsToRun.dequeue
+ // TODO Change here should be x._1 ! (test, false, conservative)
+ x._1 ! (test, false, conservative)
+ timers(x._2).start
+ workingOn = (x._2, test) :: workingOn
+ }
+ })
case (kind: String, succeeded: Boolean, file: File) =>
val workerID = workers.find((_)._1 == sender) match {
@@ -122,8 +114,8 @@ class MasterActor(testDir: File, out: PrintStream) extends Actor {
}
if (workerID._2 != -1) {
workingOn = workingOn.remove((_)._1 == workerID._2)
- if (hasNextTest) {
- val test = nextTest()
+ if (!testsToRun.isEmpty) {
+ val test = testsToRun.dequeue
// TODO Change here should be x._1 ! (test, false, conservative)
sender ! (test, false, conservative)
timers(workerID._2).restart