Make it more intuitive for tests using real Cluster(system) extension, see #2103
* We will write more tests that rely on real Cluster(system) extension, such as ClusterRoundRobinRoutedActorSpec * When not using FailureDetectorStrategy or overriding seed nodes MultiNodeClusterSpec will use the real Cluster(system) extension instead of a new Cluster instance with additional test facilities
This commit is contained in:
parent
f1626ca1d3
commit
f4cc8f8649
14 changed files with 42 additions and 34 deletions
|
|
@ -30,7 +30,7 @@ class ClientDowningNodeThatIsUnreachableWithAccrualFailureDetectorMultiJvmNode4
|
|||
|
||||
abstract class ClientDowningNodeThatIsUnreachableSpec
|
||||
extends MultiNodeSpec(ClientDowningNodeThatIsUnreachableMultiJvmSpec)
|
||||
with MultiNodeClusterSpec {
|
||||
with MultiNodeClusterSpec with FailureDetectorStrategy {
|
||||
|
||||
import ClientDowningNodeThatIsUnreachableMultiJvmSpec._
|
||||
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ class ClientDowningNodeThatIsUpWithAccrualFailureDetectorMultiJvmNode4 extends C
|
|||
|
||||
abstract class ClientDowningNodeThatIsUpSpec
|
||||
extends MultiNodeSpec(ClientDowningNodeThatIsUpMultiJvmSpec)
|
||||
with MultiNodeClusterSpec {
|
||||
with MultiNodeClusterSpec with FailureDetectorStrategy {
|
||||
|
||||
import ClientDowningNodeThatIsUpMultiJvmSpec._
|
||||
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ class ConvergenceWithAccrualFailureDetectorMultiJvmNode4 extends ConvergenceSpec
|
|||
|
||||
abstract class ConvergenceSpec
|
||||
extends MultiNodeSpec(ConvergenceMultiJvmSpec)
|
||||
with MultiNodeClusterSpec {
|
||||
with MultiNodeClusterSpec with FailureDetectorStrategy {
|
||||
|
||||
import ConvergenceMultiJvmSpec._
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ class LeaderDowningNodeThatIsUnreachableWithAccrualFailureDetectorMultiJvmNode4
|
|||
|
||||
abstract class LeaderDowningNodeThatIsUnreachableSpec
|
||||
extends MultiNodeSpec(LeaderDowningNodeThatIsUnreachableMultiJvmSpec)
|
||||
with MultiNodeClusterSpec {
|
||||
with MultiNodeClusterSpec with FailureDetectorStrategy {
|
||||
|
||||
import LeaderDowningNodeThatIsUnreachableMultiJvmSpec._
|
||||
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ class LeaderElectionWithAccrualFailureDetectorMultiJvmNode5 extends LeaderElecti
|
|||
|
||||
abstract class LeaderElectionSpec
|
||||
extends MultiNodeSpec(LeaderElectionMultiJvmSpec)
|
||||
with MultiNodeClusterSpec {
|
||||
with MultiNodeClusterSpec with FailureDetectorStrategy {
|
||||
|
||||
import LeaderElectionMultiJvmSpec._
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ class SingletonClusterWithAccrualFailureDetectorMultiJvmNode2 extends SingletonC
|
|||
|
||||
abstract class SingletonClusterSpec
|
||||
extends MultiNodeSpec(SingletonClusterMultiJvmSpec)
|
||||
with MultiNodeClusterSpec {
|
||||
with MultiNodeClusterSpec with FailureDetectorStrategy {
|
||||
|
||||
import SingletonClusterMultiJvmSpec._
|
||||
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ class SplitBrainWithAccrualFailureDetectorMultiJvmNode5 extends SplitBrainSpec w
|
|||
|
||||
abstract class SplitBrainSpec
|
||||
extends MultiNodeSpec(SplitBrainMultiJvmSpec)
|
||||
with MultiNodeClusterSpec {
|
||||
with MultiNodeClusterSpec with FailureDetectorStrategy {
|
||||
|
||||
import SplitBrainMultiJvmSpec._
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -33,6 +33,7 @@ class TransitionMultiJvmNode3 extends TransitionSpec with FailureDetectorPuppetS
|
|||
abstract class TransitionSpec
|
||||
extends MultiNodeSpec(TransitionMultiJvmSpec)
|
||||
with MultiNodeClusterSpec
|
||||
with FailureDetectorStrategy
|
||||
with ImplicitSender {
|
||||
|
||||
import TransitionMultiJvmSpec._
|
||||
|
|
|
|||
|
|
@ -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] = {
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue