Minor doc and API cleanup for Test Conductor. See #2049
This commit is contained in:
parent
af184250cc
commit
5cfb79aef5
3 changed files with 11 additions and 20 deletions
|
|
@ -36,14 +36,16 @@ This is a schematic overview of the test conductor.
|
|||
.. image:: ../images/akka-remote-testconductor.png
|
||||
|
||||
The test conductor server is responsible for coordinating barriers and sending commands to the test conductor
|
||||
clients that act upon them, e.g. throttling network traffic to/from another client.
|
||||
clients that act upon them, e.g. throttling network traffic to/from another client. More information on the
|
||||
possible operations is availible in the ``akka.remote.testconductor.Conductor`` API documentation.
|
||||
|
||||
The Multi Node Spec
|
||||
===================
|
||||
|
||||
The Multi Node Spec consists of two parts. The ``MultiNodeConfig`` that is responsible for common
|
||||
configuration and enumerating and naming the nodes under test. The ``MultiNodeSpec`` that contains all the
|
||||
convenience functions for making the test nodes interact with each other.
|
||||
configuration and enumerating and naming the nodes under test. The ``MultiNodeSpec`` that contains a number
|
||||
of convenience functions for making the test nodes interact with each other. More information on the possible
|
||||
operations is available in the ``akka.remote.testkit.MultiNodeSpec`` API documentation.
|
||||
|
||||
The setup of the ``MultiNodeSpec`` is configured through java system properties that you set on all JVMs that's going to run a
|
||||
node under test. These can easily be set on the JVM command line with ``-Dproperty=value``.
|
||||
|
|
|
|||
|
|
@ -191,17 +191,6 @@ trait Conductor { this: TestConductorExt ⇒
|
|||
controller ? Terminate(node, exitValue) mapTo classTag[Done]
|
||||
}
|
||||
|
||||
/**
|
||||
* Tell the SBT plugin to forcibly terminate the given remote node using Process.destroy.
|
||||
*
|
||||
* @param node is the symbolic name of the node which is to be affected
|
||||
*/
|
||||
// TODO: uncomment (and implement in Controller) if really needed
|
||||
// def kill(node: RoleName): Future[Done] = {
|
||||
// import Settings.QueryTimeout
|
||||
// controller ? Terminate(node, -1) mapTo classTag[Done]
|
||||
// }
|
||||
|
||||
/**
|
||||
* Obtain the list of remote host names currently registered.
|
||||
*/
|
||||
|
|
@ -455,12 +444,8 @@ private[akka] class Controller(private var initialParticipants: Int, controllerP
|
|||
val t = nodes(target)
|
||||
nodes(node).fsm forward ToClient(DisconnectMsg(t.addr, abort))
|
||||
case Terminate(node, exitValueOrKill) ⇒
|
||||
if (exitValueOrKill < 0) {
|
||||
// TODO: kill via SBT
|
||||
} else {
|
||||
barrier ! BarrierCoordinator.RemoveClient(node)
|
||||
nodes(node).fsm forward ToClient(TerminateMsg(exitValueOrKill))
|
||||
}
|
||||
case Remove(node) ⇒
|
||||
barrier ! BarrierCoordinator.RemoveClient(node)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -312,6 +312,10 @@ abstract class MultiNodeSpec(val myself: RoleName, _system: ActorSystem, _roles:
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the `yes` block of code only on the given nodes (names according
|
||||
* to the `roleMap`) else execute the `no` block of code.
|
||||
*/
|
||||
def ifNode[T](nodes: RoleName*)(yes: ⇒ T)(no: ⇒ T): T = {
|
||||
if (nodes exists (_ == myself)) yes else no
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue