diff --git a/akka-cluster/src/multi-jvm/scala/akka/cluster/NodeMembershipSpec.scala b/akka-cluster/src/multi-jvm/scala/akka/cluster/NodeMembershipSpec.scala index 4b9436165d..22c76cae67 100644 --- a/akka-cluster/src/multi-jvm/scala/akka/cluster/NodeMembershipSpec.scala +++ b/akka-cluster/src/multi-jvm/scala/akka/cluster/NodeMembershipSpec.scala @@ -40,7 +40,7 @@ abstract class NodeMembershipSpec extends MultiNodeSpec(NodeMembershipMultiJvmSp override def initialParticipants = 3 - var node: Cluster = _ + def node() = Cluster(system) after { testConductor.enter("after") @@ -54,63 +54,33 @@ abstract class NodeMembershipSpec extends MultiNodeSpec(NodeMembershipMultiJvmSp "(when two systems) start gossiping to each other so that both systems gets the same gossip info" in { - def assertMembers: Unit = { - val members = node.latestGossip.members.toIndexedSeq + runOn(first, second) { + awaitCond(node().latestGossip.members.size == 2) + val members = node().latestGossip.members.toIndexedSeq members.size must be(2) members(0).address must be(firstAddress) members(1).address must be(secondAddress) awaitCond { - node.latestGossip.members.forall(_.status == MemberStatus.Up) + node().latestGossip.members.forall(_.status == MemberStatus.Up) } - } - - runOn(first) { - node = Cluster(system) - awaitCond(node.latestGossip.members.size == 2) - assertMembers - node.convergence.isDefined - } - - runOn(second) { - node = Cluster(system) - awaitCond(node.latestGossip.members.size == 2) - assertMembers - node.convergence.isDefined + awaitCond(node().convergence.isDefined) } } "(when three systems) start gossiping to each other so that both systems gets the same gossip info" in { - def assertMembers: Unit = { - val members = node.latestGossip.members.toIndexedSeq - members.size must be(3) - members(0).address must be(firstAddress) - members(1).address must be(secondAddress) - members(2).address must be(thirdAddress) - awaitCond { - node.latestGossip.members.forall(_.status == MemberStatus.Up) - } - } - - runOn(third) { - node = Cluster(system) - awaitCond(node.latestGossip.members.size == 3) - awaitCond(node.convergence.isDefined) - assertMembers - } - - runOn(first) { - awaitCond(node.latestGossip.members.size == 3) - assertMembers - node.convergence.isDefined - } - - runOn(second) { - awaitCond(node.latestGossip.members.size == 3) - assertMembers - node.convergence.isDefined + // runOn all + awaitCond(node().latestGossip.members.size == 3) + val members = node().latestGossip.members.toIndexedSeq + members.size must be(3) + members(0).address must be(firstAddress) + members(1).address must be(secondAddress) + members(2).address must be(thirdAddress) + awaitCond { + node().latestGossip.members.forall(_.status == MemberStatus.Up) } + awaitCond(node().convergence.isDefined) } } diff --git a/akka-cluster/src/multi-jvm/scala/akka/cluster/NodeStartupSpec.scala b/akka-cluster/src/multi-jvm/scala/akka/cluster/NodeStartupSpec.scala index 6d95b4d651..5f79d85ecb 100644 --- a/akka-cluster/src/multi-jvm/scala/akka/cluster/NodeStartupSpec.scala +++ b/akka-cluster/src/multi-jvm/scala/akka/cluster/NodeStartupSpec.scala @@ -41,29 +41,25 @@ abstract class NodeStartupSpec extends MultiNodeSpec(NodeStartupMultiJvmSpec) wi override def initialParticipants = 2 - var node: Cluster = _ + def node() = Cluster(system) after { testConductor.enter("after") } - runOn(first) { - node = Cluster(system) - } - "A first cluster node with a 'node-to-join' config set to empty string (singleton cluster)" must { "be a singleton cluster when started up" in { runOn(first) { - awaitCond(node.isSingletonCluster) + awaitCond(node().isSingletonCluster) // FIXME #2117 singletonCluster should reach convergence - //awaitCond(firstNode.convergence.isDefined) + //awaitCond(node().convergence.isDefined) } } "be in 'Joining' phase when started up" in { runOn(first) { - val members = node.latestGossip.members + val members = node().latestGossip.members members.size must be(1) val firstAddress = testConductor.getAddressFor(first).await val joiningMember = members find (_.address == firstAddress) @@ -75,26 +71,16 @@ abstract class NodeStartupSpec extends MultiNodeSpec(NodeStartupMultiJvmSpec) wi "A second cluster node with a 'node-to-join' config defined" must { "join the other node cluster when sending a Join command" in { - val secondAddress = testConductor.getAddressFor(second).await - def awaitSecondUp = awaitCond { + // runOn all + val secondAddress = testConductor.getAddressFor(second).await + awaitCond { node.latestGossip.members.exists { member ⇒ member.address == secondAddress && member.status == MemberStatus.Up } } - - runOn(second) { - // start cluster on second node, and join - node = Cluster(system) - awaitSecondUp - node.convergence.isDefined - } - - runOn(first) { - awaitSecondUp - node.latestGossip.members.size must be(2) - node.convergence.isDefined - } + node().latestGossip.members.size must be(2) + awaitCond(node().convergence.isDefined) } }