2009-04-09 15:49:42 +02:00
|
|
|
/**
|
|
|
|
|
* Copyright (C) 2009 Scalable Solutions.
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
package se.scalablesolutions.akka.kernel
|
|
|
|
|
|
2009-04-27 19:55:57 +02:00
|
|
|
import com.jteigen.scalatest.JUnit4Runner
|
2009-05-09 19:55:42 +02:00
|
|
|
import config.ScalaConfig.{SupervisorConfig, RestartStrategy, Worker, LifeCycle, AllForOne, Permanent}
|
|
|
|
|
|
|
|
|
|
|
2009-04-27 19:55:57 +02:00
|
|
|
import org.junit.runner.RunWith
|
2009-04-09 15:49:42 +02:00
|
|
|
import org.scalatest._
|
|
|
|
|
|
|
|
|
|
import scala.actors.Actor._
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @author <a href="http://jonasboner.com">Jonas Bonér</a>
|
|
|
|
|
*/
|
2009-04-27 19:55:57 +02:00
|
|
|
@RunWith(classOf[JUnit4Runner])
|
2009-04-09 15:49:42 +02:00
|
|
|
class SupervisorStateSpec extends Suite {
|
|
|
|
|
|
|
|
|
|
val dummyActor = new GenericServer { override def body: PartialFunction[Any, Unit] = { case _ => }}
|
|
|
|
|
val newDummyActor = () => dummyActor
|
|
|
|
|
var state: SupervisorState = _
|
|
|
|
|
var proxy: GenericServerContainer = _
|
|
|
|
|
var supervisor: Supervisor = _
|
|
|
|
|
|
|
|
|
|
def setup = {
|
|
|
|
|
proxy = new GenericServerContainer("server1", newDummyActor)
|
|
|
|
|
object factory extends SupervisorFactory {
|
|
|
|
|
override def getSupervisorConfig: SupervisorConfig = {
|
|
|
|
|
SupervisorConfig(
|
|
|
|
|
RestartStrategy(AllForOne, 3, 100),
|
|
|
|
|
Worker(
|
|
|
|
|
proxy,
|
|
|
|
|
LifeCycle(Permanent, 100))
|
|
|
|
|
:: Nil)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
supervisor = factory.newSupervisor
|
|
|
|
|
state = new SupervisorState(supervisor, new AllForOneStrategy(3, 100))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
def testAddServer = {
|
|
|
|
|
setup
|
|
|
|
|
state.addServerContainer(proxy)
|
|
|
|
|
state.getServerContainer("server1") match {
|
|
|
|
|
case None => fail("should have returned server")
|
|
|
|
|
case Some(server) =>
|
|
|
|
|
assert(server != null)
|
|
|
|
|
assert(server.isInstanceOf[GenericServerContainer])
|
|
|
|
|
assert(proxy === server)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
def testGetServer = {
|
|
|
|
|
setup
|
|
|
|
|
state.addServerContainer(proxy)
|
|
|
|
|
state.getServerContainer("server1") match {
|
|
|
|
|
case None => fail("should have returned server")
|
|
|
|
|
case Some(server) =>
|
|
|
|
|
assert(server != null)
|
|
|
|
|
assert(server.isInstanceOf[GenericServerContainer])
|
|
|
|
|
assert(proxy === server)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
def testRemoveServer = {
|
|
|
|
|
setup
|
|
|
|
|
state.addServerContainer(proxy)
|
|
|
|
|
|
|
|
|
|
state.removeServerContainer("server1")
|
|
|
|
|
state.getServerContainer("server1") match {
|
|
|
|
|
case Some(_) => fail("should have returned None")
|
|
|
|
|
case None =>
|
|
|
|
|
}
|
|
|
|
|
state.getServerContainer("dummyActor") match {
|
|
|
|
|
case Some(_) => fail("should have returned None")
|
|
|
|
|
case None =>
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
def testGetNonExistingServerBySymbol = {
|
|
|
|
|
setup
|
|
|
|
|
state.getServerContainer("server2") match {
|
|
|
|
|
case Some(_) => fail("should have returned None")
|
|
|
|
|
case None =>
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
def testGetNonExistingServerByActor = {
|
|
|
|
|
setup
|
|
|
|
|
state.getServerContainer("dummyActor") match {
|
|
|
|
|
case Some(_) => fail("should have returned None")
|
|
|
|
|
case None =>
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|