- move all creation of ActorRefs into the ActorRefProvider (deadLetters, locker) - rootPath does not contain remote transport address any longer in order to start the LocalActorRefProvider before the RemoteTransport; the transport address is inserted during serialization only, which enables us later to have more than one transport available for one actor system (maybe even needed for clustering) - fix inheritance between DeadLetterActorRef and EmptyLocalActorRef - document some start-up dependencies by reordering constructor code - fix remote tests which used self.path for identifying remote actors (since that no longer includes the remote transport address)
62 lines
1.6 KiB
Scala
62 lines
1.6 KiB
Scala
package akka.remote
|
|
|
|
import akka.actor.{ Actor, ActorRef, Props }
|
|
import akka.testkit._
|
|
import akka.dispatch.Await
|
|
import akka.pattern.ask
|
|
|
|
object DirectRoutedRemoteActorMultiJvmSpec extends AbstractRemoteActorMultiJvmSpec {
|
|
override def NrOfNodes = 2
|
|
|
|
class SomeActor extends Actor with Serializable {
|
|
def receive = {
|
|
case "identify" ⇒ sender ! self
|
|
}
|
|
}
|
|
|
|
import com.typesafe.config.ConfigFactory
|
|
override def commonConfig = ConfigFactory.parseString("""
|
|
akka {
|
|
loglevel = "WARNING"
|
|
actor {
|
|
provider = "akka.remote.RemoteActorRefProvider"
|
|
deployment {
|
|
/service-hello.remote = %s
|
|
}
|
|
}
|
|
}""" format akkaURIs(1))
|
|
}
|
|
|
|
import DirectRoutedRemoteActorMultiJvmSpec._
|
|
|
|
class DirectRoutedRemoteActorMultiJvmNode1 extends AkkaRemoteSpec(nodeConfigs(0)) {
|
|
import DirectRoutedRemoteActorMultiJvmSpec._
|
|
val nodes = NrOfNodes
|
|
|
|
"___" must {
|
|
"___" in {
|
|
barrier("start")
|
|
barrier("done")
|
|
}
|
|
}
|
|
}
|
|
|
|
class DirectRoutedRemoteActorMultiJvmNode2 extends AkkaRemoteSpec(nodeConfigs(1)) with DefaultTimeout {
|
|
|
|
import DirectRoutedRemoteActorMultiJvmSpec._
|
|
val nodes = NrOfNodes
|
|
|
|
"A new remote actor configured with a Direct router" must {
|
|
"be locally instantiated on a remote node and be able to communicate through its RemoteActorRef" in {
|
|
barrier("start")
|
|
|
|
val actor = system.actorOf(Props[SomeActor], "service-hello")
|
|
actor.isInstanceOf[RemoteActorRef] must be(true)
|
|
|
|
Await.result(actor ? "identify", timeout.duration).asInstanceOf[ActorRef].path.address.hostPort must equal(akkaSpec(0))
|
|
|
|
barrier("done")
|
|
}
|
|
}
|
|
}
|
|
|