All tests compile

This commit is contained in:
Jonas Bonér 2010-05-03 09:30:36 +02:00
parent 076a29d666
commit 7cdda0fb82
7 changed files with 135 additions and 165 deletions

View file

@ -14,94 +14,83 @@ import org.junit.{Before, After, Test}
import scala.collection.mutable.HashSet import scala.collection.mutable.HashSet
@RunWith(classOf[JUnitRunner]) @RunWith(classOf[JUnitRunner])
class ActorPatternsTest extends junit.framework.TestCase with Suite with MustMatchers with ActorTestUtil with Logging { class ActorPatternsTest extends junit.framework.TestCase with Suite with MustMatchers with Logging {
import Patterns._ import Patterns._
@Test def testDispatcher = verify(new TestActor { @Test def testDispatcher = {
def test = {
val (testMsg1,testMsg2,testMsg3,testMsg4) = ("test1","test2","test3","test4") val (testMsg1,testMsg2,testMsg3,testMsg4) = ("test1","test2","test3","test4")
var targetOk = 0 var targetOk = 0
val t1: Actor = actor { val t1 = actor {
case `testMsg1` => targetOk += 2 case `testMsg1` => targetOk += 2
case `testMsg2` => targetOk += 4 case `testMsg2` => targetOk += 4
} }
val t2: Actor = actor { val t2 = actor {
case `testMsg3` => targetOk += 8 case `testMsg3` => targetOk += 8
} }
val d = dispatcherActor { val d = dispatcherActor {
case `testMsg1`|`testMsg2` => t1 case `testMsg1`|`testMsg2` => t1
case `testMsg3` => t2 case `testMsg3` => t2
} }.start
handle(d,t1,t2){
d ! testMsg1 d ! testMsg1
d ! testMsg2 d ! testMsg2
d ! testMsg3 d ! testMsg3
Thread.sleep(1000) Thread.sleep(1000)
targetOk must be(14) targetOk must be(14)
t1.stop
t2.stop
d.stop
} }
}
})
@Test def testLogger = verify(new TestActor { @Test def testLogger = {
def test = {
val msgs = new HashSet[Any] val msgs = new HashSet[Any]
val t1: Actor = actor { val t1 = actor {
case _ => case _ =>
} }
val l = loggerActor(t1,(x) => msgs += x) val l = loggerActor(t1,(x) => msgs += x).start
handle(t1,l) { val foo : Any = "foo"
val t1 : Any = "foo" val bar : Any = "bar"
val t2 : Any = "bar" l ! foo
l ! t1 l ! bar
l ! t2
Thread.sleep(1000) Thread.sleep(1000)
msgs must ( have size (2) and contain (t1) and contain (t2) ) msgs must ( have size (2) and contain (foo) and contain (bar) )
t1.stop
l.stop
} }
}
})
@Test def testSmallestMailboxFirstDispatcher = verify(new TestActor { @Test def testSmallestMailboxFirstDispatcher = {
def test = {
val t1ProcessedCount = new AtomicInteger(0) val t1ProcessedCount = new AtomicInteger(0)
val t1: Actor = actor { val t1 = actor {
case x => { case x =>
Thread.sleep(50) // slow actor Thread.sleep(50) // slow actor
t1ProcessedCount.incrementAndGet t1ProcessedCount.incrementAndGet
} }
}
val t2ProcessedCount = new AtomicInteger(0) val t2ProcessedCount = new AtomicInteger(0)
val t2: Actor = actor { val t2 = actor {
case x => { case x => t2ProcessedCount.incrementAndGet
t2ProcessedCount.incrementAndGet
} }
}
val d = loadBalancerActor(new SmallestMailboxFirstIterator(t1 :: t2 :: Nil)) val d = loadBalancerActor(new SmallestMailboxFirstIterator(t1 :: t2 :: Nil))
for (i <- 1 to 500) d ! i
handle(d, t1, t2) {
for (i <- 1 to 500)
d ! i
Thread.sleep(6000) Thread.sleep(6000)
t1ProcessedCount.get must be < (t2ProcessedCount.get) // because t1 is much slower and thus has a bigger mailbox all the time t1ProcessedCount.get must be < (t2ProcessedCount.get) // because t1 is much slower and thus has a bigger mailbox all the time
t1.stop
t2.stop
d.stop
} }
}
})
@Test def testListener = verify(new TestActor { @Test def testListener = {
import java.util.concurrent.{ CountDownLatch, TimeUnit } import java.util.concurrent.{ CountDownLatch, TimeUnit }
def test = {
val latch = new CountDownLatch(2) val latch = new CountDownLatch(2)
val num = new AtomicInteger(0) val num = new AtomicInteger(0)
val i = new Actor with Listeners { val i = newActor(() => new Actor with Listeners {
def receive = listenerManagement orElse { def receive = listenerManagement orElse {
case "foo" => gossip("bar") case "foo" => gossip("bar")
} }
} })
i.start i.start
def newListener = actor { def newListener = actor {
@ -114,7 +103,6 @@ class ActorPatternsTest extends junit.framework.TestCase with Suite with MustMat
val a2 = newListener val a2 = newListener
val a3 = newListener val a3 = newListener
handle(i,a1,a2,a3) {
i ! Listen(a1) i ! Listen(a1)
i ! Listen(a2) i ! Listen(a2)
i ! Listen(a3) i ! Listen(a3)
@ -125,30 +113,6 @@ class ActorPatternsTest extends junit.framework.TestCase with Suite with MustMat
val done = latch.await(5,TimeUnit.SECONDS) val done = latch.await(5,TimeUnit.SECONDS)
done must be (true) done must be (true)
num.get must be (2) num.get must be (2)
} i.stop
}
});
}
trait ActorTestUtil {
def handle[T](actors : Actor*)(test : => T) : T = {
for(a <- actors) a.start
try {
test
}
finally {
for(a <- actors) a.stop
}
}
def verify(actor : TestActor) : Unit = handle(actor) {
actor.test
} }
} }
abstract class TestActor extends Actor with ActorTestUtil {
def test : Unit
def receive = { case _ => }
}

View file

@ -1,6 +1,7 @@
package se.scalablesolutions.akka.persistence.cassandra package se.scalablesolutions.akka.persistence.cassandra
import se.scalablesolutions.akka.actor.{Actor, Transactor} import se.scalablesolutions.akka.actor.{Actor, ActorID, Transactor}
import Actor._
import org.junit.Test import org.junit.Test
import org.junit.Assert._ import org.junit.Assert._
@ -16,13 +17,13 @@ case class SetMapState(key: String, value: String)
case class SetVectorState(key: String) case class SetVectorState(key: String)
case class SetRefState(key: String) case class SetRefState(key: String)
case class Success(key: String, value: String) case class Success(key: String, value: String)
case class Failure(key: String, value: String, failer: Actor) case class Failure(key: String, value: String, failer: ActorID)
case class SetMapStateOneWay(key: String, value: String) case class SetMapStateOneWay(key: String, value: String)
case class SetVectorStateOneWay(key: String) case class SetVectorStateOneWay(key: String)
case class SetRefStateOneWay(key: String) case class SetRefStateOneWay(key: String)
case class SuccessOneWay(key: String, value: String) case class SuccessOneWay(key: String, value: String)
case class FailureOneWay(key: String, value: String, failer: Actor) case class FailureOneWay(key: String, value: String, failer: ActorID)
class CassandraPersistentActor extends Transactor { class CassandraPersistentActor extends Transactor {
timeout = 100000 timeout = 100000
@ -75,7 +76,7 @@ class CassandraPersistentActorSpec extends JUnitSuite {
@Test @Test
def testMapShouldNotRollbackStateForStatefulServerInCaseOfSuccess = { def testMapShouldNotRollbackStateForStatefulServerInCaseOfSuccess = {
val stateful = new CassandraPersistentActor val stateful = newActor[CassandraPersistentActor]
stateful.start stateful.start
stateful !! SetMapState("testShouldNotRollbackStateForStatefulServerInCaseOfSuccess", "init") // set init state stateful !! SetMapState("testShouldNotRollbackStateForStatefulServerInCaseOfSuccess", "init") // set init state
stateful !! Success("testShouldNotRollbackStateForStatefulServerInCaseOfSuccess", "new state") // transactionrequired stateful !! Success("testShouldNotRollbackStateForStatefulServerInCaseOfSuccess", "new state") // transactionrequired
@ -85,10 +86,10 @@ class CassandraPersistentActorSpec extends JUnitSuite {
@Test @Test
def testMapShouldRollbackStateForStatefulServerInCaseOfFailure = { def testMapShouldRollbackStateForStatefulServerInCaseOfFailure = {
val stateful = new CassandraPersistentActor val stateful = newActor[CassandraPersistentActor]
stateful.start stateful.start
stateful !! SetMapState("testShouldRollbackStateForStatefulServerInCaseOfFailure", "init") // set init state stateful !! SetMapState("testShouldRollbackStateForStatefulServerInCaseOfFailure", "init") // set init state
val failer = new PersistentFailerActor val failer = newActor[PersistentFailerActor]
failer.start failer.start
try { try {
stateful !! Failure("testShouldRollbackStateForStatefulServerInCaseOfFailure", "new state", failer) // call failing transactionrequired method stateful !! Failure("testShouldRollbackStateForStatefulServerInCaseOfFailure", "new state", failer) // call failing transactionrequired method
@ -100,7 +101,7 @@ class CassandraPersistentActorSpec extends JUnitSuite {
@Test @Test
def testVectorShouldNotRollbackStateForStatefulServerInCaseOfSuccess = { def testVectorShouldNotRollbackStateForStatefulServerInCaseOfSuccess = {
val stateful = new CassandraPersistentActor val stateful = newActor[CassandraPersistentActor]
stateful.start stateful.start
stateful !! SetVectorState("init") // set init state stateful !! SetVectorState("init") // set init state
stateful !! Success("testShouldNotRollbackStateForStatefulServerInCaseOfSuccess", "new state") // transactionrequired stateful !! Success("testShouldNotRollbackStateForStatefulServerInCaseOfSuccess", "new state") // transactionrequired
@ -109,10 +110,10 @@ class CassandraPersistentActorSpec extends JUnitSuite {
@Test @Test
def testVectorShouldRollbackStateForStatefulServerInCaseOfFailure = { def testVectorShouldRollbackStateForStatefulServerInCaseOfFailure = {
val stateful = new CassandraPersistentActor val stateful = newActor[CassandraPersistentActor]
stateful.start stateful.start
stateful !! SetVectorState("init") // set init state stateful !! SetVectorState("init") // set init state
val failer = new PersistentFailerActor val failer = newActor[PersistentFailerActor]
failer.start failer.start
try { try {
stateful !! Failure("testShouldRollbackStateForStatefulServerInCaseOfFailure", "new state", failer) // call failing transactionrequired method stateful !! Failure("testShouldRollbackStateForStatefulServerInCaseOfFailure", "new state", failer) // call failing transactionrequired method
@ -123,7 +124,7 @@ class CassandraPersistentActorSpec extends JUnitSuite {
@Test @Test
def testRefShouldNotRollbackStateForStatefulServerInCaseOfSuccess = { def testRefShouldNotRollbackStateForStatefulServerInCaseOfSuccess = {
val stateful = new CassandraPersistentActor val stateful = newActor[CassandraPersistentActor]
stateful.start stateful.start
stateful !! SetRefState("init") // set init state stateful !! SetRefState("init") // set init state
stateful !! Success("testShouldNotRollbackStateForStatefulServerInCaseOfSuccess", "new state") // transactionrequired stateful !! Success("testShouldNotRollbackStateForStatefulServerInCaseOfSuccess", "new state") // transactionrequired
@ -133,10 +134,10 @@ class CassandraPersistentActorSpec extends JUnitSuite {
@Test @Test
def testRefShouldRollbackStateForStatefulServerInCaseOfFailure = { def testRefShouldRollbackStateForStatefulServerInCaseOfFailure = {
val stateful = new CassandraPersistentActor val stateful = newActor[CassandraPersistentActor]
stateful.start stateful.start
stateful !! SetRefState("init") // set init state stateful !! SetRefState("init") // set init state
val failer = new PersistentFailerActor val failer = newActor[PersistentFailerActor]
failer.start failer.start
try { try {
stateful !! Failure("testShouldRollbackStateForStatefulServerInCaseOfFailure", "new state", failer) // call failing transactionrequired method stateful !! Failure("testShouldRollbackStateForStatefulServerInCaseOfFailure", "new state", failer) // call failing transactionrequired method

View file

@ -8,7 +8,8 @@ import org.junit.Assert._
import _root_.dispatch.json.{JsNumber, JsValue} import _root_.dispatch.json.{JsNumber, JsValue}
import _root_.dispatch.json.Js._ import _root_.dispatch.json.Js._
import se.scalablesolutions.akka.actor.{Transactor, Actor} import se.scalablesolutions.akka.actor.{Transactor, Actor, ActorID}
import Actor._
/** /**
* A persistent actor based on MongoDB storage. * A persistent actor based on MongoDB storage.
@ -24,8 +25,8 @@ import se.scalablesolutions.akka.actor.{Transactor, Actor}
*/ */
case class Balance(accountNo: String) case class Balance(accountNo: String)
case class Debit(accountNo: String, amount: BigInt, failer: Actor) case class Debit(accountNo: String, amount: BigInt, failer: ActorID)
case class MultiDebit(accountNo: String, amounts: List[BigInt], failer: Actor) case class MultiDebit(accountNo: String, amounts: List[BigInt], failer: ActorID)
case class Credit(accountNo: String, amount: BigInt) case class Credit(accountNo: String, amount: BigInt)
case object LogSize case object LogSize
@ -101,9 +102,9 @@ class BankAccountActor extends Transactor {
class MongoPersistentActorSpec extends TestCase { class MongoPersistentActorSpec extends TestCase {
@Test @Test
def testSuccessfulDebit = { def testSuccessfulDebit = {
val bactor = new BankAccountActor val bactor = newActor[BankAccountActor]
bactor.start bactor.start
val failer = new PersistentFailerActor val failer = newActor[PersistentFailerActor]
failer.start failer.start
bactor !! Credit("a-123", 5000) bactor !! Credit("a-123", 5000)
bactor !! Debit("a-123", 3000, failer) bactor !! Debit("a-123", 3000, failer)
@ -126,14 +127,14 @@ class MongoPersistentActorSpec extends TestCase {
@Test @Test
def testUnsuccessfulDebit = { def testUnsuccessfulDebit = {
val bactor = new BankAccountActor val bactor = newActor[BankAccountActor]
bactor.start bactor.start
bactor !! Credit("a-123", 5000) bactor !! Credit("a-123", 5000)
val JsNumber(b) = (bactor !! Balance("a-123")).get.asInstanceOf[JsValue] val JsNumber(b) = (bactor !! Balance("a-123")).get.asInstanceOf[JsValue]
assertEquals(BigInt(5000), BigInt(b.intValue)) assertEquals(BigInt(5000), BigInt(b.intValue))
val failer = new PersistentFailerActor val failer = newActor[PersistentFailerActor]
failer.start failer.start
try { try {
bactor !! Debit("a-123", 7000, failer) bactor !! Debit("a-123", 7000, failer)
@ -149,14 +150,14 @@ class MongoPersistentActorSpec extends TestCase {
@Test @Test
def testUnsuccessfulMultiDebit = { def testUnsuccessfulMultiDebit = {
val bactor = new BankAccountActor val bactor = newActor[BankAccountActor]
bactor.start bactor.start
bactor !! Credit("a-123", 5000) bactor !! Credit("a-123", 5000)
val JsNumber(b) = (bactor !! Balance("a-123")).get.asInstanceOf[JsValue] val JsNumber(b) = (bactor !! Balance("a-123")).get.asInstanceOf[JsValue]
assertEquals(BigInt(5000), BigInt(b.intValue)) assertEquals(BigInt(5000), BigInt(b.intValue))
val failer = new PersistentFailerActor val failer = newActor[PersistentFailerActor]
failer.start failer.start
try { try {
bactor !! MultiDebit("a-123", List(500, 2000, 1000, 3000), failer) bactor !! MultiDebit("a-123", List(500, 2000, 1000, 3000), failer)

View file

@ -5,7 +5,8 @@ import junit.framework.TestCase
import org.junit.{Test, Before} import org.junit.{Test, Before}
import org.junit.Assert._ import org.junit.Assert._
import se.scalablesolutions.akka.actor.{Actor, Transactor} import se.scalablesolutions.akka.actor.{Actor, ActorID, Transactor}
import Actor._
/** /**
* A persistent actor based on Redis storage. * A persistent actor based on Redis storage.
@ -21,8 +22,8 @@ import se.scalablesolutions.akka.actor.{Actor, Transactor}
*/ */
case class Balance(accountNo: String) case class Balance(accountNo: String)
case class Debit(accountNo: String, amount: BigInt, failer: Actor) case class Debit(accountNo: String, amount: BigInt, failer: ActorID)
case class MultiDebit(accountNo: String, amounts: List[BigInt], failer: Actor) case class MultiDebit(accountNo: String, amounts: List[BigInt], failer: ActorID)
case class Credit(accountNo: String, amount: BigInt) case class Credit(accountNo: String, amount: BigInt)
case object LogSize case object LogSize
@ -97,9 +98,9 @@ class AccountActor extends Transactor {
class RedisPersistentActorSpec extends TestCase { class RedisPersistentActorSpec extends TestCase {
@Test @Test
def testSuccessfulDebit = { def testSuccessfulDebit = {
val bactor = new AccountActor val bactor = newActor[AccountActor]
bactor.start bactor.start
val failer = new PersistentFailerActor val failer = newActor[PersistentFailerActor]
failer.start failer.start
bactor !! Credit("a-123", 5000) bactor !! Credit("a-123", 5000)
bactor !! Debit("a-123", 3000, failer) bactor !! Debit("a-123", 3000, failer)
@ -117,12 +118,12 @@ class RedisPersistentActorSpec extends TestCase {
@Test @Test
def testUnsuccessfulDebit = { def testUnsuccessfulDebit = {
val bactor = new AccountActor val bactor = newActor[AccountActor]
bactor.start bactor.start
bactor !! Credit("a-123", 5000) bactor !! Credit("a-123", 5000)
assertEquals(BigInt(5000), (bactor !! Balance("a-123")).get) assertEquals(BigInt(5000), (bactor !! Balance("a-123")).get)
val failer = new PersistentFailerActor val failer = newActor[PersistentFailerActor]
failer.start failer.start
try { try {
bactor !! Debit("a-123", 7000, failer) bactor !! Debit("a-123", 7000, failer)
@ -138,13 +139,13 @@ class RedisPersistentActorSpec extends TestCase {
@Test @Test
def testUnsuccessfulMultiDebit = { def testUnsuccessfulMultiDebit = {
val bactor = new AccountActor val bactor = newActor[AccountActor]
bactor.start bactor.start
bactor !! Credit("a-123", 5000) bactor !! Credit("a-123", 5000)
assertEquals(BigInt(5000), (bactor !! (Balance("a-123"), 5000)).get) assertEquals(BigInt(5000), (bactor !! (Balance("a-123"), 5000)).get)
val failer = new PersistentFailerActor val failer = newActor[PersistentFailerActor]
failer.start failer.start
try { try {
bactor !! MultiDebit("a-123", List(500, 2000, 1000, 3000), failer) bactor !! MultiDebit("a-123", List(500, 2000, 1000, 3000), failer)

View file

@ -5,7 +5,8 @@ import junit.framework.TestCase
import org.junit.{Test, Before} import org.junit.{Test, Before}
import org.junit.Assert._ import org.junit.Assert._
import se.scalablesolutions.akka.actor.{Actor, Transactor} import se.scalablesolutions.akka.actor.{Actor, ActorID, Transactor}
import Actor._
/** /**
* A persistent actor based on Redis queue storage. * A persistent actor based on Redis queue storage.
@ -16,7 +17,7 @@ import se.scalablesolutions.akka.actor.{Actor, Transactor}
case class NQ(accountNo: String) case class NQ(accountNo: String)
case object DQ case object DQ
case class MNDQ(accountNos: List[String], noOfDQs: Int, failer: Actor) case class MNDQ(accountNos: List[String], noOfDQs: Int, failer: ActorID)
case object SZ case object SZ
class QueueActor extends Transactor { class QueueActor extends Transactor {
@ -53,7 +54,7 @@ class QueueActor extends Transactor {
class RedisPersistentQSpec extends TestCase { class RedisPersistentQSpec extends TestCase {
@Test @Test
def testSuccessfulNQ = { def testSuccessfulNQ = {
val qa = new QueueActor val qa = newActor[QueueActor]
qa.start qa.start
qa !! NQ("a-123") qa !! NQ("a-123")
qa !! NQ("a-124") qa !! NQ("a-124")
@ -64,7 +65,7 @@ class RedisPersistentQSpec extends TestCase {
@Test @Test
def testSuccessfulDQ = { def testSuccessfulDQ = {
val qa = new QueueActor val qa = newActor[QueueActor]
qa.start qa.start
qa !! NQ("a-123") qa !! NQ("a-123")
qa !! NQ("a-124") qa !! NQ("a-124")
@ -80,9 +81,9 @@ class RedisPersistentQSpec extends TestCase {
@Test @Test
def testSuccessfulMNDQ = { def testSuccessfulMNDQ = {
val qa = new QueueActor val qa = newActor[QueueActor]
qa.start qa.start
val failer = new PersistentFailerActor val failer = newActor[PersistentFailerActor]
failer.start failer.start
qa !! NQ("a-123") qa !! NQ("a-123")
@ -100,9 +101,9 @@ class RedisPersistentQSpec extends TestCase {
@Test @Test
def testMixedMNDQ = { def testMixedMNDQ = {
val qa = new QueueActor val qa = newActor[QueueActor]
qa.start qa.start
val failer = new PersistentFailerActor val failer = newActor[PersistentFailerActor]
failer.start failer.start
// 3 enqueues // 3 enqueues

View file

@ -7,7 +7,8 @@ import org.scalatest.BeforeAndAfterAll
import org.scalatest.junit.JUnitRunner import org.scalatest.junit.JUnitRunner
import org.junit.runner.RunWith import org.junit.runner.RunWith
import se.scalablesolutions.akka.actor.{Actor, Transactor} import se.scalablesolutions.akka.actor.{Actor, ActorID, Transactor}
import Actor._
/** /**
* A persistent actor based on Redis sortedset storage. * A persistent actor based on Redis sortedset storage.
@ -42,7 +43,7 @@ case class SCORE(h: Hacker)
case class RANGE(start: Int, end: Int) case class RANGE(start: Int, end: Int)
// add and remove subject to the condition that there will be at least 3 hackers // add and remove subject to the condition that there will be at least 3 hackers
case class MULTI(add: List[Hacker], rem: List[Hacker], failer: Actor) case class MULTI(add: List[Hacker], rem: List[Hacker], failer: ActorID)
class SortedSetActor extends Transactor { class SortedSetActor extends Transactor {
timeout = 100000 timeout = 100000
@ -110,7 +111,7 @@ class RedisPersistentSortedSetSpec extends
val h6 = Hacker("Alan Turing", "1912") val h6 = Hacker("Alan Turing", "1912")
describe("Add and report cardinality of the set") { describe("Add and report cardinality of the set") {
val qa = new SortedSetActor val qa = newActor[SortedSetActor]
qa.start qa.start
it("should enter 6 hackers") { it("should enter 6 hackers") {
@ -166,10 +167,10 @@ class RedisPersistentSortedSetSpec extends
describe("Transaction semantics") { describe("Transaction semantics") {
it("should rollback on exception") { it("should rollback on exception") {
val qa = new SortedSetActor val qa = newActor[SortedSetActor]
qa.start qa.start
val failer = new PersistentFailerActor val failer = newActor[PersistentFailerActor]
failer.start failer.start
(qa !! SIZE).get.asInstanceOf[Int] should equal(0) (qa !! SIZE).get.asInstanceOf[Int] should equal(0)
@ -194,7 +195,7 @@ class RedisPersistentSortedSetSpec extends
describe("zrange") { describe("zrange") {
it ("should report proper range") { it ("should report proper range") {
val qa = new SortedSetActor val qa = newActor[SortedSetActor]
qa.start qa.start
qa !! ADD(h1) qa !! ADD(h1)
qa !! ADD(h2) qa !! ADD(h2)
@ -213,7 +214,7 @@ class RedisPersistentSortedSetSpec extends
} }
it ("should report proper rge") { it ("should report proper rge") {
val qa = new SortedSetActor val qa = newActor[SortedSetActor]
qa.start qa.start
qa !! ADD(h1) qa !! ADD(h1)
qa !! ADD(h2) qa !! ADD(h2)

View file

@ -5,6 +5,7 @@
package se.scalablesolutions.akka.security package se.scalablesolutions.akka.security
import se.scalablesolutions.akka.config.ScalaConfig._ import se.scalablesolutions.akka.config.ScalaConfig._
import se.scalablesolutions.akka.actor.Actor._
import org.scalatest.Suite import org.scalatest.Suite
import org.scalatest.junit.JUnitSuite import org.scalatest.junit.JUnitSuite
@ -20,7 +21,7 @@ import com.sun.jersey.core.util.Base64
class BasicAuthenticatorSpec extends junit.framework.TestCase class BasicAuthenticatorSpec extends junit.framework.TestCase
with Suite with MockitoSugar with MustMatchers { with Suite with MockitoSugar with MustMatchers {
val authenticator = new BasicAuthenticator val authenticator = newActor[BasicAuthenticator]
authenticator.start authenticator.start
@Test def testChallenge = { @Test def testChallenge = {