|
Akka/Scala example source code file (SmallestMailboxSpec.scala)
The SmallestMailboxSpec.scala Akka example source code/** * Copyright (C) 2009-2014 Typesafe Inc. <http://www.typesafe.com> */ package akka.routing import java.util.concurrent.ConcurrentHashMap import scala.concurrent.Await import scala.concurrent.duration._ import akka.actor.{ Props, Actor } import akka.testkit.{ TestLatch, ImplicitSender, DefaultTimeout, AkkaSpec } @org.junit.runner.RunWith(classOf[org.scalatest.junit.JUnitRunner]) class SmallestMailboxSpec extends AkkaSpec("akka.actor.serialize-messages = off") with DefaultTimeout with ImplicitSender { "smallest mailbox pool" must { "deliver messages to idle actor" in { val usedActors = new ConcurrentHashMap[Int, String]() val router = system.actorOf(SmallestMailboxPool(3).props(routeeProps = Props(new Actor { def receive = { case (busy: TestLatch, receivedLatch: TestLatch) ⇒ usedActors.put(0, self.path.toString) self ! "another in busy mailbox" receivedLatch.countDown() Await.ready(busy, TestLatch.DefaultTimeout) case (msg: Int, receivedLatch: TestLatch) ⇒ usedActors.put(msg, self.path.toString) receivedLatch.countDown() case s: String ⇒ } }))) val busy = TestLatch(1) val received0 = TestLatch(1) router ! ((busy, received0)) Await.ready(received0, TestLatch.DefaultTimeout) val received1 = TestLatch(1) router ! ((1, received1)) Await.ready(received1, TestLatch.DefaultTimeout) val received2 = TestLatch(1) router ! ((2, received2)) Await.ready(received2, TestLatch.DefaultTimeout) val received3 = TestLatch(1) router ! ((3, received3)) Await.ready(received3, TestLatch.DefaultTimeout) busy.countDown() val busyPath = usedActors.get(0) busyPath should not be (null) val path1 = usedActors.get(1) val path2 = usedActors.get(2) val path3 = usedActors.get(3) path1 should not be (busyPath) path2 should not be (busyPath) path3 should not be (busyPath) } } } Other Akka source code examplesHere is a short list of links related to this Akka SmallestMailboxSpec.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.