Merge branch 'master' into wip-2112-leader-downing-spec-jboner

Conflicts:
	akka-cluster/src/multi-jvm/scala/akka/cluster/MultiNodeClusterSpec.scala
This commit is contained in:
Patrik Nordwall 2012-05-28 14:39:36 +02:00
commit 1b20760583
22 changed files with 786 additions and 638 deletions

View file

@ -20,7 +20,6 @@ object MultiNodeClusterSpec {
unreachable-nodes-reaper-frequency = 200 ms
periodic-tasks-initial-delay = 300 ms
}
akka.test {
single-expect-default = 5 s
}
@ -49,8 +48,7 @@ trait MultiNodeClusterSpec { self: MultiNodeSpec ⇒
*/
def assertLeader(nodesInCluster: RoleName*): Unit = if (nodesInCluster.contains(mySelf)) {
nodesInCluster.length must not be (0)
import Member.addressOrdering
val expectedLeader = nodesInCluster.map(role (role, node(role).address)).sortBy(_._2).head._1
val expectedLeader = roleOfLeader(nodesInCluster)
cluster.isLeader must be(ifNode(expectedLeader)(true)(false))
}
@ -67,7 +65,24 @@ trait MultiNodeClusterSpec { self: MultiNodeSpec ⇒
awaitCond(cluster.convergence.isDefined, timeout)
if (!canNotBePartOfMemberRing.isEmpty) // don't run this on an empty set
awaitCond(
canNotBePartOfMemberRing forall (address => !(cluster.latestGossip.members exists (_.address == address))),
canNotBePartOfMemberRing forall (address !(cluster.latestGossip.members exists (_.address == address))),
timeout)
}
def roleOfLeader(nodesInCluster: Seq[RoleName]): RoleName = {
nodesInCluster.length must not be (0)
nodesInCluster.sorted.head
}
/**
* Sort the roles in the order used by the cluster.
*/
implicit val clusterOrdering: Ordering[RoleName] = new Ordering[RoleName] {
import Member.addressOrdering
def compare(x: RoleName, y: RoleName) = addressOrdering.compare(node(x).address, node(y).address)
}
def roleName(address: Address): Option[RoleName] = {
testConductor.getNodes.await.find(node(_).address == address)
}
}