diff --git a/akka-cluster/src/multi-jvm/scala/akka/cluster/ClientDowningNodeThatIsUnreachableSpec.scala b/akka-cluster/src/multi-jvm/scala/akka/cluster/ClientDowningNodeThatIsUnreachableSpec.scala index e0440394a7..8ca328ed18 100644 --- a/akka-cluster/src/multi-jvm/scala/akka/cluster/ClientDowningNodeThatIsUnreachableSpec.scala +++ b/akka-cluster/src/multi-jvm/scala/akka/cluster/ClientDowningNodeThatIsUnreachableSpec.scala @@ -30,7 +30,7 @@ class ClientDowningNodeThatIsUnreachableWithAccrualFailureDetectorMultiJvmNode4 abstract class ClientDowningNodeThatIsUnreachableSpec extends MultiNodeSpec(ClientDowningNodeThatIsUnreachableMultiJvmSpec) - with MultiNodeClusterSpec { + with MultiNodeClusterSpec with FailureDetectorStrategy { import ClientDowningNodeThatIsUnreachableMultiJvmSpec._ diff --git a/akka-cluster/src/multi-jvm/scala/akka/cluster/ClientDowningNodeThatIsUpSpec.scala b/akka-cluster/src/multi-jvm/scala/akka/cluster/ClientDowningNodeThatIsUpSpec.scala index 82d90c81b5..e7d487a276 100644 --- a/akka-cluster/src/multi-jvm/scala/akka/cluster/ClientDowningNodeThatIsUpSpec.scala +++ b/akka-cluster/src/multi-jvm/scala/akka/cluster/ClientDowningNodeThatIsUpSpec.scala @@ -30,7 +30,7 @@ class ClientDowningNodeThatIsUpWithAccrualFailureDetectorMultiJvmNode4 extends C abstract class ClientDowningNodeThatIsUpSpec extends MultiNodeSpec(ClientDowningNodeThatIsUpMultiJvmSpec) - with MultiNodeClusterSpec { + with MultiNodeClusterSpec with FailureDetectorStrategy { import ClientDowningNodeThatIsUpMultiJvmSpec._ diff --git a/akka-cluster/src/multi-jvm/scala/akka/cluster/ConvergenceSpec.scala b/akka-cluster/src/multi-jvm/scala/akka/cluster/ConvergenceSpec.scala index 1862b8ea40..239a7c7bcb 100644 --- a/akka-cluster/src/multi-jvm/scala/akka/cluster/ConvergenceSpec.scala +++ b/akka-cluster/src/multi-jvm/scala/akka/cluster/ConvergenceSpec.scala @@ -35,7 +35,7 @@ class ConvergenceWithAccrualFailureDetectorMultiJvmNode4 extends ConvergenceSpec abstract class ConvergenceSpec extends MultiNodeSpec(ConvergenceMultiJvmSpec) - with MultiNodeClusterSpec { + with MultiNodeClusterSpec with FailureDetectorStrategy { import ConvergenceMultiJvmSpec._ diff --git a/akka-cluster/src/multi-jvm/scala/akka/cluster/JoinInProgressSpec.scala b/akka-cluster/src/multi-jvm/scala/akka/cluster/JoinInProgressSpec.scala index e67ec357ff..a7a5c94512 100644 --- a/akka-cluster/src/multi-jvm/scala/akka/cluster/JoinInProgressSpec.scala +++ b/akka-cluster/src/multi-jvm/scala/akka/cluster/JoinInProgressSpec.scala @@ -29,8 +29,8 @@ object JoinInProgressMultiJvmSpec extends MultiNodeConfig { .withFallback(MultiNodeClusterSpec.clusterConfig))) } -class JoinInProgressMultiJvmNode1 extends JoinInProgressSpec with AccrualFailureDetectorStrategy -class JoinInProgressMultiJvmNode2 extends JoinInProgressSpec with AccrualFailureDetectorStrategy +class JoinInProgressMultiJvmNode1 extends JoinInProgressSpec +class JoinInProgressMultiJvmNode2 extends JoinInProgressSpec abstract class JoinInProgressSpec extends MultiNodeSpec(JoinInProgressMultiJvmSpec) diff --git a/akka-cluster/src/multi-jvm/scala/akka/cluster/LargeClusterSpec.scala b/akka-cluster/src/multi-jvm/scala/akka/cluster/LargeClusterSpec.scala index bc583cb809..c92ff0eafb 100644 --- a/akka-cluster/src/multi-jvm/scala/akka/cluster/LargeClusterSpec.scala +++ b/akka-cluster/src/multi-jvm/scala/akka/cluster/LargeClusterSpec.scala @@ -71,11 +71,11 @@ object LargeClusterMultiJvmSpec extends MultiNodeConfig { """)) } -class LargeClusterMultiJvmNode1 extends LargeClusterSpec with AccrualFailureDetectorStrategy -class LargeClusterMultiJvmNode2 extends LargeClusterSpec with AccrualFailureDetectorStrategy -class LargeClusterMultiJvmNode3 extends LargeClusterSpec with AccrualFailureDetectorStrategy -class LargeClusterMultiJvmNode4 extends LargeClusterSpec with AccrualFailureDetectorStrategy -class LargeClusterMultiJvmNode5 extends LargeClusterSpec with AccrualFailureDetectorStrategy +class LargeClusterMultiJvmNode1 extends LargeClusterSpec +class LargeClusterMultiJvmNode2 extends LargeClusterSpec +class LargeClusterMultiJvmNode3 extends LargeClusterSpec +class LargeClusterMultiJvmNode4 extends LargeClusterSpec +class LargeClusterMultiJvmNode5 extends LargeClusterSpec abstract class LargeClusterSpec extends MultiNodeSpec(LargeClusterMultiJvmSpec) diff --git a/akka-cluster/src/multi-jvm/scala/akka/cluster/LeaderDowningNodeThatIsUnreachableSpec.scala b/akka-cluster/src/multi-jvm/scala/akka/cluster/LeaderDowningNodeThatIsUnreachableSpec.scala index 2ae0a79483..d4023d785b 100644 --- a/akka-cluster/src/multi-jvm/scala/akka/cluster/LeaderDowningNodeThatIsUnreachableSpec.scala +++ b/akka-cluster/src/multi-jvm/scala/akka/cluster/LeaderDowningNodeThatIsUnreachableSpec.scala @@ -35,7 +35,7 @@ class LeaderDowningNodeThatIsUnreachableWithAccrualFailureDetectorMultiJvmNode4 abstract class LeaderDowningNodeThatIsUnreachableSpec extends MultiNodeSpec(LeaderDowningNodeThatIsUnreachableMultiJvmSpec) - with MultiNodeClusterSpec { + with MultiNodeClusterSpec with FailureDetectorStrategy { import LeaderDowningNodeThatIsUnreachableMultiJvmSpec._ diff --git a/akka-cluster/src/multi-jvm/scala/akka/cluster/LeaderElectionSpec.scala b/akka-cluster/src/multi-jvm/scala/akka/cluster/LeaderElectionSpec.scala index 1a657b3da8..5d455251aa 100644 --- a/akka-cluster/src/multi-jvm/scala/akka/cluster/LeaderElectionSpec.scala +++ b/akka-cluster/src/multi-jvm/scala/akka/cluster/LeaderElectionSpec.scala @@ -33,7 +33,7 @@ class LeaderElectionWithAccrualFailureDetectorMultiJvmNode5 extends LeaderElecti abstract class LeaderElectionSpec extends MultiNodeSpec(LeaderElectionMultiJvmSpec) - with MultiNodeClusterSpec { + with MultiNodeClusterSpec with FailureDetectorStrategy { import LeaderElectionMultiJvmSpec._ diff --git a/akka-cluster/src/multi-jvm/scala/akka/cluster/MultiNodeClusterSpec.scala b/akka-cluster/src/multi-jvm/scala/akka/cluster/MultiNodeClusterSpec.scala index 72535bd4eb..161b3d3601 100644 --- a/akka-cluster/src/multi-jvm/scala/akka/cluster/MultiNodeClusterSpec.scala +++ b/akka-cluster/src/multi-jvm/scala/akka/cluster/MultiNodeClusterSpec.scala @@ -38,7 +38,7 @@ object MultiNodeClusterSpec { """) } -trait MultiNodeClusterSpec extends FailureDetectorStrategy with Suite { self: MultiNodeSpec ⇒ +trait MultiNodeClusterSpec extends Suite { self: MultiNodeSpec ⇒ override def initialParticipants = roles.size @@ -90,11 +90,21 @@ trait MultiNodeClusterSpec extends FailureDetectorStrategy with Suite { self: Mu /** * The cluster node instance. Needs to be lazily created. */ - private lazy val clusterNode = new Cluster(system.asInstanceOf[ExtendedActorSystem], failureDetector) { - override def seedNodes: IndexedSeq[Address] = { - val testSeedNodes = MultiNodeClusterSpec.this.seedNodes - if (testSeedNodes.isEmpty) super.seedNodes - else testSeedNodes map address + private lazy val clusterNode = this match { + case x: FailureDetectorStrategy ⇒ createTestCluster(x.failureDetector) + case _ if seedNodes.nonEmpty ⇒ + createTestCluster(new AccrualFailureDetector(system, new ClusterSettings(system.settings.config, system.name))) + case _ ⇒ Cluster(system) + + } + + private def createTestCluster(failureDetector: FailureDetector): Cluster = { + new Cluster(system.asInstanceOf[ExtendedActorSystem], failureDetector) { + override def seedNodes: IndexedSeq[Address] = { + val testSeedNodes = MultiNodeClusterSpec.this.seedNodes + if (testSeedNodes.isEmpty) super.seedNodes + else testSeedNodes map address + } } } @@ -215,3 +225,4 @@ trait MultiNodeClusterSpec extends FailureDetectorStrategy with Suite { self: Mu def roleName(addr: Address): Option[RoleName] = roles.find(address(_) == addr) } + diff --git a/akka-cluster/src/multi-jvm/scala/akka/cluster/SingletonClusterSpec.scala b/akka-cluster/src/multi-jvm/scala/akka/cluster/SingletonClusterSpec.scala index d044d90f72..c0ac0f81de 100644 --- a/akka-cluster/src/multi-jvm/scala/akka/cluster/SingletonClusterSpec.scala +++ b/akka-cluster/src/multi-jvm/scala/akka/cluster/SingletonClusterSpec.scala @@ -33,7 +33,7 @@ class SingletonClusterWithAccrualFailureDetectorMultiJvmNode2 extends SingletonC abstract class SingletonClusterSpec extends MultiNodeSpec(SingletonClusterMultiJvmSpec) - with MultiNodeClusterSpec { + with MultiNodeClusterSpec with FailureDetectorStrategy { import SingletonClusterMultiJvmSpec._ diff --git a/akka-cluster/src/multi-jvm/scala/akka/cluster/SplitBrainSpec.scala b/akka-cluster/src/multi-jvm/scala/akka/cluster/SplitBrainSpec.scala index d030734a71..365940ab8a 100644 --- a/akka-cluster/src/multi-jvm/scala/akka/cluster/SplitBrainSpec.scala +++ b/akka-cluster/src/multi-jvm/scala/akka/cluster/SplitBrainSpec.scala @@ -43,7 +43,7 @@ class SplitBrainWithAccrualFailureDetectorMultiJvmNode5 extends SplitBrainSpec w abstract class SplitBrainSpec extends MultiNodeSpec(SplitBrainMultiJvmSpec) - with MultiNodeClusterSpec { + with MultiNodeClusterSpec with FailureDetectorStrategy { import SplitBrainMultiJvmSpec._ diff --git a/akka-cluster/src/multi-jvm/scala/akka/cluster/SunnyWeatherSpec.scala b/akka-cluster/src/multi-jvm/scala/akka/cluster/SunnyWeatherSpec.scala index 0a2872b186..768546a532 100644 --- a/akka-cluster/src/multi-jvm/scala/akka/cluster/SunnyWeatherSpec.scala +++ b/akka-cluster/src/multi-jvm/scala/akka/cluster/SunnyWeatherSpec.scala @@ -32,11 +32,11 @@ object SunnyWeatherMultiJvmSpec extends MultiNodeConfig { """)) } -class SunnyWeatherMultiJvmNode1 extends SunnyWeatherSpec with AccrualFailureDetectorStrategy -class SunnyWeatherMultiJvmNode2 extends SunnyWeatherSpec with AccrualFailureDetectorStrategy -class SunnyWeatherMultiJvmNode3 extends SunnyWeatherSpec with AccrualFailureDetectorStrategy -class SunnyWeatherMultiJvmNode4 extends SunnyWeatherSpec with AccrualFailureDetectorStrategy -class SunnyWeatherMultiJvmNode5 extends SunnyWeatherSpec with AccrualFailureDetectorStrategy +class SunnyWeatherMultiJvmNode1 extends SunnyWeatherSpec +class SunnyWeatherMultiJvmNode2 extends SunnyWeatherSpec +class SunnyWeatherMultiJvmNode3 extends SunnyWeatherSpec +class SunnyWeatherMultiJvmNode4 extends SunnyWeatherSpec +class SunnyWeatherMultiJvmNode5 extends SunnyWeatherSpec abstract class SunnyWeatherSpec extends MultiNodeSpec(SunnyWeatherMultiJvmSpec) diff --git a/akka-cluster/src/multi-jvm/scala/akka/cluster/TransitionSpec.scala b/akka-cluster/src/multi-jvm/scala/akka/cluster/TransitionSpec.scala index e3e446bd50..3ff2935949 100644 --- a/akka-cluster/src/multi-jvm/scala/akka/cluster/TransitionSpec.scala +++ b/akka-cluster/src/multi-jvm/scala/akka/cluster/TransitionSpec.scala @@ -33,6 +33,7 @@ class TransitionMultiJvmNode3 extends TransitionSpec with FailureDetectorPuppetS abstract class TransitionSpec extends MultiNodeSpec(TransitionMultiJvmSpec) with MultiNodeClusterSpec + with FailureDetectorStrategy with ImplicitSender { import TransitionMultiJvmSpec._ diff --git a/akka-cluster/src/multi-jvm/scala/akka/cluster/UnreachableNodeRejoinsClusterSpec.scala b/akka-cluster/src/multi-jvm/scala/akka/cluster/UnreachableNodeRejoinsClusterSpec.scala index ca5c8f3265..e3f21d86cf 100644 --- a/akka-cluster/src/multi-jvm/scala/akka/cluster/UnreachableNodeRejoinsClusterSpec.scala +++ b/akka-cluster/src/multi-jvm/scala/akka/cluster/UnreachableNodeRejoinsClusterSpec.scala @@ -35,7 +35,7 @@ class UnreachableNodeRejoinsClusterWithAccrualFailureDetectorMultiJvmNode4 exten abstract class UnreachableNodeRejoinsClusterSpec extends MultiNodeSpec(UnreachableNodeRejoinsClusterMultiJvmSpec) - with MultiNodeClusterSpec { + with MultiNodeClusterSpec with FailureDetectorStrategy { import UnreachableNodeRejoinsClusterMultiJvmSpec._ def allBut(role: RoleName, roles: Seq[RoleName] = roles): Seq[RoleName] = { diff --git a/akka-cluster/src/multi-jvm/scala/akka/cluster/routing/ClusterRoundRobinRoutedActorSpec.scala b/akka-cluster/src/multi-jvm/scala/akka/cluster/routing/ClusterRoundRobinRoutedActorSpec.scala index 80370278ec..ed2b338250 100644 --- a/akka-cluster/src/multi-jvm/scala/akka/cluster/routing/ClusterRoundRobinRoutedActorSpec.scala +++ b/akka-cluster/src/multi-jvm/scala/akka/cluster/routing/ClusterRoundRobinRoutedActorSpec.scala @@ -20,7 +20,6 @@ import akka.testkit._ import scala.concurrent.util.duration._ import akka.cluster.MultiNodeClusterSpec import com.typesafe.config.ConfigFactory -import akka.cluster.FailureDetectorPuppetStrategy import akka.cluster.Cluster object ClusterRoundRobinRoutedActorMultiJvmSpec extends MultiNodeConfig { @@ -50,10 +49,10 @@ object ClusterRoundRobinRoutedActorMultiJvmSpec extends MultiNodeConfig { } -class ClusterRoundRobinRoutedActorMultiJvmNode1 extends ClusterRoundRobinRoutedActorSpec with FailureDetectorPuppetStrategy -class ClusterRoundRobinRoutedActorMultiJvmNode2 extends ClusterRoundRobinRoutedActorSpec with FailureDetectorPuppetStrategy -class ClusterRoundRobinRoutedActorMultiJvmNode3 extends ClusterRoundRobinRoutedActorSpec with FailureDetectorPuppetStrategy -class ClusterRoundRobinRoutedActorMultiJvmNode4 extends ClusterRoundRobinRoutedActorSpec with FailureDetectorPuppetStrategy +class ClusterRoundRobinRoutedActorMultiJvmNode1 extends ClusterRoundRobinRoutedActorSpec +class ClusterRoundRobinRoutedActorMultiJvmNode2 extends ClusterRoundRobinRoutedActorSpec +class ClusterRoundRobinRoutedActorMultiJvmNode3 extends ClusterRoundRobinRoutedActorSpec +class ClusterRoundRobinRoutedActorMultiJvmNode4 extends ClusterRoundRobinRoutedActorSpec abstract class ClusterRoundRobinRoutedActorSpec extends MultiNodeSpec(ClusterRoundRobinRoutedActorMultiJvmSpec) with MultiNodeClusterSpec @@ -63,9 +62,6 @@ abstract class ClusterRoundRobinRoutedActorSpec extends MultiNodeSpec(ClusterRou // sorted in the order used by the cluster lazy val sortedRoles = Seq(first, second, third, fourth).sorted - // FIXME make this use of Cluster(system) more easy to use in tests - override def cluster: Cluster = Cluster(system) - "A cluster router configured with a RoundRobin router" must { "start cluster" taggedAs LongRunningTest in { awaitClusterUp(first, second, third, fourth)