|
Akka/Scala example source code file (ControlAwareDispatcherSpec.scala)
The ControlAwareDispatcherSpec.scala Akka example source code
package akka.dispatch
import akka.testkit.{ DefaultTimeout, AkkaSpec }
import akka.actor.{ Actor, Props }
object ControlAwareDispatcherSpec {
val config = """
unbounded-control-dispatcher {
mailbox-type = "akka.dispatch.UnboundedControlAwareMailbox"
}
bounded-control-dispatcher {
mailbox-type = "akka.dispatch.BoundedControlAwareMailbox"
}
"""
case object ImportantMessage extends ControlMessage
}
@org.junit.runner.RunWith(classOf[org.scalatest.junit.JUnitRunner])
class ControlAwareDispatcherSpec extends AkkaSpec(ControlAwareDispatcherSpec.config) with DefaultTimeout {
import ControlAwareDispatcherSpec.ImportantMessage
"A ControlAwareDispatcher" must {
"deliver control messages first using an unbounded mailbox" in {
val dispatcherKey = "unbounded-control-dispatcher"
testControl(dispatcherKey)
}
"deliver control messages first using a bounded mailbox" in {
val dispatcherKey = "bounded-control-dispatcher"
testControl(dispatcherKey)
}
}
def testControl(dispatcherKey: String) = {
// It's important that the actor under test is not a top level actor
// with RepointableActorRef, since messages might be queued in
// UnstartedCell and the sent to the PriorityQueue and consumed immediately
// without the ordering taking place.
val actor = system.actorOf(Props(new Actor {
context.actorOf(Props(new Actor {
self ! "test"
self ! "test2"
self ! ImportantMessage
def receive = {
case x ⇒ testActor ! x
}
}).withDispatcher(dispatcherKey))
def receive = Actor.emptyBehavior
}))
expectMsg(ImportantMessage)
expectMsg("test")
expectMsg("test2")
}
}
Other Akka source code examplesHere is a short list of links related to this Akka ControlAwareDispatcherSpec.scala source code file: |
| ... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.