Package akka.remote.testkit
Class MultiNodeSpec
- java.lang.Object
- 
- akka.testkit.TestKit
- 
- akka.remote.testkit.MultiNodeSpec
 
 
- 
- All Implemented Interfaces:
- MultiNodeSpecCallbacks,- TestKitBase
 
 public abstract class MultiNodeSpec extends TestKit implements MultiNodeSpecCallbacks Note: To be able to run tests with everything ignored or excluded by tags you must not usetestconductor, or helper methods that usetestconductor, from the constructor of your test class. Otherwise the controller node might be shutdown before other nodes have completed and you will see errors like:AskTimeoutException: sending to terminated ref breaks promises. Using lazy val is fine.
- 
- 
Nested Class SummaryNested Classes Modifier and Type Class Description classMultiNodeSpec.AwaitHelper<T>
 - 
Constructor SummaryConstructors Constructor Description MultiNodeSpec(RoleName myself, ActorSystem _system, scala.collection.immutable.Seq<RoleName> _roles, scala.Function1<RoleName,scala.collection.immutable.Seq<java.lang.String>> deployments)MultiNodeSpec(MultiNodeConfig config)MultiNodeSpec(MultiNodeConfig config, scala.Function1<com.typesafe.config.Config,ActorSystem> actorSystemCreator)Constructor for using arbitrary logic to create the actor system used in the multi node spec (theConfigpassed to the creator must be used in the created actor system for the multi node tests to work)
 - 
Method SummaryAll Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected voidafterTermination()Override this method to do something when the whole test is terminating.protected voidatStartup()Override this method to do something when the whole test is starting up.protected voidattachConductor(TestConductorExt tc)<T> MultiNodeSpec.AwaitHelper<T>awaitHelper(scala.concurrent.Awaitable<T> w)Enrich.await()onto all Awaitables, using remaining duration from the innermost enclosingwithinblock or QueryTimeout.static com.typesafe.config.ConfigconfigureNextPortIfFixed(com.typesafe.config.Config config)voidenterBarrier(scala.collection.immutable.Seq<java.lang.String> name)Enter the named barriers in the order given.voidenterBarrier(scala.concurrent.duration.FiniteDuration max, scala.collection.immutable.Seq<java.lang.String> name)Enter the named barriers in the order given.abstract intinitialParticipants()TO BE DEFINED BY USER: Defines the number of participants required for starting the test.protected voidinjectDeployments(ActorSystem sys, RoleName role)booleanisNode(scala.collection.immutable.Seq<RoleName> nodes)Verify that the running node matches one of the given nodesLoggingAdapterlog()static intmaxNodes()Number of nodes node taking part in this test.voidmultiNodeSpecAfterAll()Call this after the all test cases have run.voidmultiNodeSpecBeforeAll()Call this before the start of the test run.voidmuteDeadLetters(scala.collection.immutable.Seq<java.lang.Class<?>> messageClasses, ActorSystem sys)ActorSystemmuteDeadLetters$default$2(scala.collection.immutable.Seq<java.lang.Class<?>> messageClasses)protected AddressmyAddress()RoleNamemyself()ActorPathnode(RoleName role)Query the controller for the transport address of the given node (by role name) and return that as an ActorPath for easy composition:scala.collection.immutable.Seq<RoleName>roles()All registered rolesvoidrunOn(scala.collection.immutable.Seq<RoleName> nodes, scala.Function0<scala.runtime.BoxedUnit> thunk)Execute the given block of code only on the given nodes (names according to theroleMap).static java.lang.IntegerselfIndex()Index of this node in the roles sequence.static java.lang.StringselfName()Name (or IP address; must be resolvable using InetAddress.getByName) of the host this node is running on.static intselfPort()Port number of this node.static java.lang.StringserverName()Name (or IP address; must be resolvable using InetAddress.getByName) of the host that the server node is running on.static intserverPort()Port number of the node that's running the server system.scala.concurrent.duration.FiniteDurationshutdownTimeout()protected ActorSystemstartNewSystem()This method starts a new ActorSystem with the same configuration as the previous one on the current node, including deployments.static inttcpPort()TCP Port number to be used when running tests on TCP.TestConductorExttestConductor()Access to the barriers, failure injection, etc.voidtestConductor_$eq(TestConductorExt x$1)static scala.Option<java.lang.Object>udpPort()UDP Port number to be used when running tests on UDP.booleanverifySystemShutdown()Override this and returntrueto assert that the shutdown of theActorSystemwas done properly.- 
Methods inherited from class akka.testkit.TestKitawaitCond, awaitCond$default$3, awaitCond$default$4, now, shutdownActorSystem, shutdownActorSystem$default$2, shutdownActorSystem$default$3, system, testActor
 - 
Methods inherited from class java.lang.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 - 
Methods inherited from interface akka.testkit.TestKitBaseassertForDuration, assertForDuration$default$3, awaitAssert, awaitAssert$default$2, awaitAssert$default$3, awaitCond, awaitCond$default$2, awaitCond$default$3, awaitCond$default$4, checkMissingAndUnexpected, childActorOf, childActorOf, childActorOf, childActorOf, end_$eq, expectMsg, expectMsg, expectMsg, expectMsg_internal, expectMsg_internal$default$3, expectMsgAllClassOf, expectMsgAllClassOf, expectMsgAllConformingOf, expectMsgAllConformingOf, expectMsgAllOf, expectMsgAllOf, expectMsgAllOf_internal, expectMsgAnyClassOf, expectMsgAnyClassOf, expectMsgAnyClassOf_internal, expectMsgAnyOf, expectMsgAnyOf, expectMsgAnyOf_internal, expectMsgClass, expectMsgClass, expectMsgClass_internal, expectMsgPF, expectMsgPF$default$1, expectMsgPF$default$2, expectMsgType, expectMsgType, expectNoMessage, expectNoMessage, expectNoMsg_internal, expectTerminated, expectTerminated$default$2, fishForMessage, fishForMessage$default$1, fishForMessage$default$2, fishForSpecificMessage, fishForSpecificMessage$default$1, fishForSpecificMessage$default$2, format, ignoreMsg, ignoreNoMsg, internalExpectMsgAllClassOf, internalExpectMsgAllConformingOf, lastSender, lastWasNoMsg_$eq, msgAvailable, now, receiveN, receiveN, receiveN_internal, receiveOne, receiveWhile, receiveWhile$default$1, receiveWhile$default$2, receiveWhile$default$3, remaining, remainingOr, remainingOrDefault, remainingOrDilated, setAutoPilot, shutdown, shutdown$default$1, shutdown$default$2, shutdown$default$3, testActorName, testKitSettings, unwatch, watch, within, within
 
- 
 
- 
- 
- 
Constructor Detail- 
MultiNodeSpecpublic MultiNodeSpec(RoleName myself, ActorSystem _system, scala.collection.immutable.Seq<RoleName> _roles, scala.Function1<RoleName,scala.collection.immutable.Seq<java.lang.String>> deployments) 
 - 
MultiNodeSpecpublic MultiNodeSpec(MultiNodeConfig config, scala.Function1<com.typesafe.config.Config,ActorSystem> actorSystemCreator) Constructor for using arbitrary logic to create the actor system used in the multi node spec (theConfigpassed to the creator must be used in the created actor system for the multi node tests to work)
 - 
MultiNodeSpecpublic MultiNodeSpec(MultiNodeConfig config) 
 
- 
 - 
Method Detail- 
maxNodespublic static int maxNodes() Number of nodes node taking part in this test.-Dmultinode.max-nodes=4
 - 
selfNamepublic static java.lang.String selfName() Name (or IP address; must be resolvable using InetAddress.getByName) of the host this node is running on.-Dmultinode.host=host.example.comInetAddress.getLocalHost.getHostAddress is used if empty or "localhost" is defined as system property "multinode.host". 
 - 
tcpPortpublic static int tcpPort() TCP Port number to be used when running tests on TCP. 0 means a random port.-Dmultinode.port=0
 - 
udpPortpublic static scala.Option<java.lang.Object> udpPort() UDP Port number to be used when running tests on UDP. 0 means a random port.-Dmultinode.udp.port=0
 - 
selfPortpublic static int selfPort() Port number of this node.This is defined in function of property multinode.protocol. If set to 'udp', udpPort will be used. If unset or any other value, it will default to tcpPort.
 - 
serverNamepublic static java.lang.String serverName() Name (or IP address; must be resolvable using InetAddress.getByName) of the host that the server node is running on.-Dmultinode.server-host=server.example.com
 - 
serverPortpublic static int serverPort() Port number of the node that's running the server system. Defaults to 4711.-Dmultinode.server-port=4711
 - 
selfIndexpublic static java.lang.Integer selfIndex() Index of this node in the roles sequence. The TestConductor is started in “controller” mode on selfIndex 0, i.e. there you can inject failures and shutdown other nodes etc.-Dmultinode.index=0
 - 
configureNextPortIfFixedpublic static com.typesafe.config.Config configureNextPortIfFixed(com.typesafe.config.Config config) 
 - 
myselfpublic RoleName myself() 
 - 
logpublic LoggingAdapter log() 
 - 
awaitHelperpublic <T> MultiNodeSpec.AwaitHelper<T> awaitHelper(scala.concurrent.Awaitable<T> w) Enrich.await()onto all Awaitables, using remaining duration from the innermost enclosingwithinblock or QueryTimeout.
 - 
multiNodeSpecBeforeAllpublic final void multiNodeSpecBeforeAll() Description copied from interface:MultiNodeSpecCallbacksCall this before the start of the test run. NOT before every test case.- Specified by:
- multiNodeSpecBeforeAllin interface- MultiNodeSpecCallbacks
 
 - 
multiNodeSpecAfterAllpublic final void multiNodeSpecAfterAll() Description copied from interface:MultiNodeSpecCallbacksCall this after the all test cases have run. NOT after every test case.- Specified by:
- multiNodeSpecAfterAllin interface- MultiNodeSpecCallbacks
 
 - 
shutdownTimeoutpublic scala.concurrent.duration.FiniteDuration shutdownTimeout() 
 - 
verifySystemShutdownpublic boolean verifySystemShutdown() Override this and returntrueto assert that the shutdown of theActorSystemwas done properly.
 - 
atStartupprotected void atStartup() Override this method to do something when the whole test is starting up.
 - 
afterTerminationprotected void afterTermination() Override this method to do something when the whole test is terminating.
 - 
rolespublic scala.collection.immutable.Seq<RoleName> roles() All registered roles
 - 
initialParticipantspublic abstract int initialParticipants() TO BE DEFINED BY USER: Defines the number of participants required for starting the test. This might not be equals to the number of nodes available to the test.Must be a def:def initialParticipants = 5
 - 
testConductorpublic TestConductorExt testConductor() Access to the barriers, failure injection, etc. The extension will have been started either in Conductor or Player mode when the constructor of MultiNodeSpec finishes, i.e. do not call the start*() methods yourself!
 - 
testConductor_$eqpublic void testConductor_$eq(TestConductorExt x$1) 
 - 
runOnpublic void runOn(scala.collection.immutable.Seq<RoleName> nodes, scala.Function0<scala.runtime.BoxedUnit> thunk) Execute the given block of code only on the given nodes (names according to theroleMap).
 - 
isNodepublic boolean isNode(scala.collection.immutable.Seq<RoleName> nodes) Verify that the running node matches one of the given nodes
 - 
enterBarrierpublic void enterBarrier(scala.collection.immutable.Seq<java.lang.String> name) Enter the named barriers in the order given. Use the remaining duration from the innermost enclosingwithinblock or the defaultBarrierTimeout.
 - 
enterBarrierpublic void enterBarrier(scala.concurrent.duration.FiniteDuration max, scala.collection.immutable.Seq<java.lang.String> name)Enter the named barriers in the order given. Use the remaining duration from the innermost enclosingwithinblock or the passedmaxtimeout.Note that the maxtimeout is scaled using Duration.dilated, which uses the configuration entry "akka.test.timefactor".
 - 
nodepublic ActorPath node(RoleName role) Query the controller for the transport address of the given node (by role name) and return that as an ActorPath for easy composition:val serviceA = system.actorSelection(node("master") / "user" / "serviceA")
 - 
muteDeadLetterspublic void muteDeadLetters(scala.collection.immutable.Seq<java.lang.Class<?>> messageClasses, ActorSystem sys)
 - 
muteDeadLetters$default$2public ActorSystem muteDeadLetters$default$2(scala.collection.immutable.Seq<java.lang.Class<?>> messageClasses) 
 - 
attachConductorprotected void attachConductor(TestConductorExt tc) 
 - 
injectDeploymentsprotected void injectDeployments(ActorSystem sys, RoleName role) 
 - 
myAddressprotected Address myAddress() 
 - 
startNewSystemprotected ActorSystem startNewSystem() This method starts a new ActorSystem with the same configuration as the previous one on the current node, including deployments. It also creates a new TestConductor client and registers itself with the conductor so that it is possible to use barriers etc. normally after this method has been called.NOTICE: you MUST start a new system before trying to enter a barrier or otherwise using the TestConductor after having terminated this node’s system. 
 
- 
 
-