Created FailureDetectorStrategy with two implementations: FailureDetectorPuppetStrategy and AccrualFailureDetectorStrategy.
- Created FailureDetectorStrategy base trait.
- Created FailureDetectorPuppetStrategy.
- Created AccrualFailureDetectorStrategy.
- Created two versions of LeaderDowningNodeThatIsUnreachableMultiJvmSpec
- LeaderDowningNodeThatIsUnreachableWithFailureDetectorPuppet
- LeaderDowningNodeThatIsUnreachableWithAccrualFailureDetector
- Added AccrualFailureDetectorStrategy to all the remaining tests - will be split up into two versions shortly.
Signed-off-by: Jonas Bonér <jonas@jonasboner.com>
This commit is contained in:
parent
523f433e4b
commit
b65cf5c2ec
23 changed files with 149 additions and 86 deletions
|
|
@ -18,12 +18,12 @@ object ClientDowningNodeThatIsUnreachableMultiJvmSpec extends MultiNodeConfig {
|
||||||
commonConfig(debugConfig(on = false).withFallback(MultiNodeClusterSpec.clusterConfig))
|
commonConfig(debugConfig(on = false).withFallback(MultiNodeClusterSpec.clusterConfig))
|
||||||
}
|
}
|
||||||
|
|
||||||
class ClientDowningNodeThatIsUnreachableMultiJvmNode1 extends ClientDowningNodeThatIsUnreachableSpec
|
class ClientDowningNodeThatIsUnreachableMultiJvmNode1 extends ClientDowningNodeThatIsUnreachableSpec with AccrualFailureDetectorStrategy
|
||||||
class ClientDowningNodeThatIsUnreachableMultiJvmNode2 extends ClientDowningNodeThatIsUnreachableSpec
|
class ClientDowningNodeThatIsUnreachableMultiJvmNode2 extends ClientDowningNodeThatIsUnreachableSpec with AccrualFailureDetectorStrategy
|
||||||
class ClientDowningNodeThatIsUnreachableMultiJvmNode3 extends ClientDowningNodeThatIsUnreachableSpec
|
class ClientDowningNodeThatIsUnreachableMultiJvmNode3 extends ClientDowningNodeThatIsUnreachableSpec with AccrualFailureDetectorStrategy
|
||||||
class ClientDowningNodeThatIsUnreachableMultiJvmNode4 extends ClientDowningNodeThatIsUnreachableSpec
|
class ClientDowningNodeThatIsUnreachableMultiJvmNode4 extends ClientDowningNodeThatIsUnreachableSpec with AccrualFailureDetectorStrategy
|
||||||
|
|
||||||
class ClientDowningNodeThatIsUnreachableSpec
|
abstract class ClientDowningNodeThatIsUnreachableSpec
|
||||||
extends MultiNodeSpec(ClientDowningNodeThatIsUnreachableMultiJvmSpec)
|
extends MultiNodeSpec(ClientDowningNodeThatIsUnreachableMultiJvmSpec)
|
||||||
with MultiNodeClusterSpec {
|
with MultiNodeClusterSpec {
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -18,12 +18,12 @@ object ClientDowningNodeThatIsUpMultiJvmSpec extends MultiNodeConfig {
|
||||||
commonConfig(debugConfig(on = false).withFallback(MultiNodeClusterSpec.clusterConfig))
|
commonConfig(debugConfig(on = false).withFallback(MultiNodeClusterSpec.clusterConfig))
|
||||||
}
|
}
|
||||||
|
|
||||||
class ClientDowningNodeThatIsUpMultiJvmNode1 extends ClientDowningNodeThatIsUpSpec
|
class ClientDowningNodeThatIsUpMultiJvmNode1 extends ClientDowningNodeThatIsUpSpec with AccrualFailureDetectorStrategy
|
||||||
class ClientDowningNodeThatIsUpMultiJvmNode2 extends ClientDowningNodeThatIsUpSpec
|
class ClientDowningNodeThatIsUpMultiJvmNode2 extends ClientDowningNodeThatIsUpSpec with AccrualFailureDetectorStrategy
|
||||||
class ClientDowningNodeThatIsUpMultiJvmNode3 extends ClientDowningNodeThatIsUpSpec
|
class ClientDowningNodeThatIsUpMultiJvmNode3 extends ClientDowningNodeThatIsUpSpec with AccrualFailureDetectorStrategy
|
||||||
class ClientDowningNodeThatIsUpMultiJvmNode4 extends ClientDowningNodeThatIsUpSpec
|
class ClientDowningNodeThatIsUpMultiJvmNode4 extends ClientDowningNodeThatIsUpSpec with AccrualFailureDetectorStrategy
|
||||||
|
|
||||||
class ClientDowningNodeThatIsUpSpec
|
abstract class ClientDowningNodeThatIsUpSpec
|
||||||
extends MultiNodeSpec(ClientDowningNodeThatIsUpMultiJvmSpec)
|
extends MultiNodeSpec(ClientDowningNodeThatIsUpMultiJvmSpec)
|
||||||
with MultiNodeClusterSpec {
|
with MultiNodeClusterSpec {
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -25,10 +25,10 @@ object ConvergenceMultiJvmSpec extends MultiNodeConfig {
|
||||||
withFallback(MultiNodeClusterSpec.clusterConfig))
|
withFallback(MultiNodeClusterSpec.clusterConfig))
|
||||||
}
|
}
|
||||||
|
|
||||||
class ConvergenceMultiJvmNode1 extends ConvergenceSpec
|
class ConvergenceMultiJvmNode1 extends ConvergenceSpec with AccrualFailureDetectorStrategy
|
||||||
class ConvergenceMultiJvmNode2 extends ConvergenceSpec
|
class ConvergenceMultiJvmNode2 extends ConvergenceSpec with AccrualFailureDetectorStrategy
|
||||||
class ConvergenceMultiJvmNode3 extends ConvergenceSpec
|
class ConvergenceMultiJvmNode3 extends ConvergenceSpec with AccrualFailureDetectorStrategy
|
||||||
class ConvergenceMultiJvmNode4 extends ConvergenceSpec
|
class ConvergenceMultiJvmNode4 extends ConvergenceSpec with AccrualFailureDetectorStrategy
|
||||||
|
|
||||||
abstract class ConvergenceSpec
|
abstract class ConvergenceSpec
|
||||||
extends MultiNodeSpec(ConvergenceMultiJvmSpec)
|
extends MultiNodeSpec(ConvergenceMultiJvmSpec)
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,61 @@
|
||||||
|
/**
|
||||||
|
* Copyright (C) 2009-2012 Typesafe Inc. <http://www.typesafe.com>
|
||||||
|
*/
|
||||||
|
package akka.cluster
|
||||||
|
|
||||||
|
import akka.actor.Address
|
||||||
|
import akka.remote.testkit.MultiNodeSpec
|
||||||
|
import akka.testkit._
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Base trait for all failure detector strategies.
|
||||||
|
*/
|
||||||
|
trait FailureDetectorStrategy {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get or create the FailureDetector to be used in the cluster node.
|
||||||
|
* To be defined by subclass.
|
||||||
|
*/
|
||||||
|
def failureDetector: FailureDetector
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Marks a node as available in the failure detector.
|
||||||
|
* To be defined by subclass.
|
||||||
|
*/
|
||||||
|
def markNodeAsAvailable(address: Address): Unit
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Marks a node as unavailable in the failure detector.
|
||||||
|
* To be defined by subclass.
|
||||||
|
*/
|
||||||
|
def markNodeAsUnavailable(address: Address): Unit
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Defines a FailureDetectorPuppet-based FailureDetectorStrategy.
|
||||||
|
*/
|
||||||
|
trait FailureDetectorPuppetStrategy extends FailureDetectorStrategy { self: MultiNodeSpec ⇒
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The puppet instance. Separated from 'failureDetector' field so we don't have to cast when using the puppet specific methods.
|
||||||
|
*/
|
||||||
|
private val puppet = new FailureDetectorPuppet(system)
|
||||||
|
|
||||||
|
override def failureDetector: FailureDetector = puppet
|
||||||
|
|
||||||
|
override def markNodeAsAvailable(address: Address): Unit = puppet markNodeAsAvailable address
|
||||||
|
|
||||||
|
override def markNodeAsUnavailable(address: Address): Unit = puppet markNodeAsUnavailable address
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Defines a AccrualFailureDetector-based FailureDetectorStrategy.
|
||||||
|
*/
|
||||||
|
trait AccrualFailureDetectorStrategy extends FailureDetectorStrategy { self: MultiNodeSpec ⇒
|
||||||
|
|
||||||
|
override val failureDetector: FailureDetector = new AccrualFailureDetector(system, new ClusterSettings(system.settings.config, system.name))
|
||||||
|
|
||||||
|
override def markNodeAsAvailable(address: Address): Unit = { /* no-op */ }
|
||||||
|
|
||||||
|
override def markNodeAsUnavailable(address: Address): Unit = { /* no-op */ }
|
||||||
|
}
|
||||||
|
|
@ -19,9 +19,9 @@ object GossipingAccrualFailureDetectorMultiJvmSpec extends MultiNodeConfig {
|
||||||
withFallback(MultiNodeClusterSpec.clusterConfig))
|
withFallback(MultiNodeClusterSpec.clusterConfig))
|
||||||
}
|
}
|
||||||
|
|
||||||
class GossipingAccrualFailureDetectorMultiJvmNode1 extends GossipingAccrualFailureDetectorSpec
|
class GossipingAccrualFailureDetectorMultiJvmNode1 extends GossipingAccrualFailureDetectorSpec with AccrualFailureDetectorStrategy
|
||||||
class GossipingAccrualFailureDetectorMultiJvmNode2 extends GossipingAccrualFailureDetectorSpec
|
class GossipingAccrualFailureDetectorMultiJvmNode2 extends GossipingAccrualFailureDetectorSpec with AccrualFailureDetectorStrategy
|
||||||
class GossipingAccrualFailureDetectorMultiJvmNode3 extends GossipingAccrualFailureDetectorSpec
|
class GossipingAccrualFailureDetectorMultiJvmNode3 extends GossipingAccrualFailureDetectorSpec with AccrualFailureDetectorStrategy
|
||||||
|
|
||||||
abstract class GossipingAccrualFailureDetectorSpec extends MultiNodeSpec(GossipingAccrualFailureDetectorMultiJvmSpec)
|
abstract class GossipingAccrualFailureDetectorSpec extends MultiNodeSpec(GossipingAccrualFailureDetectorMultiJvmSpec)
|
||||||
with MultiNodeClusterSpec {
|
with MultiNodeClusterSpec {
|
||||||
|
|
|
||||||
|
|
@ -20,12 +20,12 @@ object JoinTwoClustersMultiJvmSpec extends MultiNodeConfig {
|
||||||
commonConfig(debugConfig(on = false).withFallback(MultiNodeClusterSpec.clusterConfig))
|
commonConfig(debugConfig(on = false).withFallback(MultiNodeClusterSpec.clusterConfig))
|
||||||
}
|
}
|
||||||
|
|
||||||
class JoinTwoClustersMultiJvmNode1 extends JoinTwoClustersSpec
|
class JoinTwoClustersMultiJvmNode1 extends JoinTwoClustersSpec with AccrualFailureDetectorStrategy
|
||||||
class JoinTwoClustersMultiJvmNode2 extends JoinTwoClustersSpec
|
class JoinTwoClustersMultiJvmNode2 extends JoinTwoClustersSpec with AccrualFailureDetectorStrategy
|
||||||
class JoinTwoClustersMultiJvmNode3 extends JoinTwoClustersSpec
|
class JoinTwoClustersMultiJvmNode3 extends JoinTwoClustersSpec with AccrualFailureDetectorStrategy
|
||||||
class JoinTwoClustersMultiJvmNode4 extends JoinTwoClustersSpec
|
class JoinTwoClustersMultiJvmNode4 extends JoinTwoClustersSpec with AccrualFailureDetectorStrategy
|
||||||
class JoinTwoClustersMultiJvmNode5 extends JoinTwoClustersSpec
|
class JoinTwoClustersMultiJvmNode5 extends JoinTwoClustersSpec with AccrualFailureDetectorStrategy
|
||||||
class JoinTwoClustersMultiJvmNode6 extends JoinTwoClustersSpec
|
class JoinTwoClustersMultiJvmNode6 extends JoinTwoClustersSpec with AccrualFailureDetectorStrategy
|
||||||
|
|
||||||
abstract class JoinTwoClustersSpec
|
abstract class JoinTwoClustersSpec
|
||||||
extends MultiNodeSpec(JoinTwoClustersMultiJvmSpec)
|
extends MultiNodeSpec(JoinTwoClustersMultiJvmSpec)
|
||||||
|
|
|
||||||
|
|
@ -23,23 +23,22 @@ object LeaderDowningNodeThatIsUnreachableMultiJvmSpec extends MultiNodeConfig {
|
||||||
withFallback(MultiNodeClusterSpec.clusterConfig))
|
withFallback(MultiNodeClusterSpec.clusterConfig))
|
||||||
}
|
}
|
||||||
|
|
||||||
class LeaderDowningNodeThatIsUnreachableMultiJvmNode1 extends LeaderDowningNodeThatIsUnreachableSpec
|
class LeaderDowningNodeThatIsUnreachableWithFailureDetectorPuppetMultiJvmNode1 extends LeaderDowningNodeThatIsUnreachableSpec with FailureDetectorPuppetStrategy
|
||||||
class LeaderDowningNodeThatIsUnreachableMultiJvmNode2 extends LeaderDowningNodeThatIsUnreachableSpec
|
class LeaderDowningNodeThatIsUnreachableWithFailureDetectorPuppetMultiJvmNode2 extends LeaderDowningNodeThatIsUnreachableSpec with FailureDetectorPuppetStrategy
|
||||||
class LeaderDowningNodeThatIsUnreachableMultiJvmNode3 extends LeaderDowningNodeThatIsUnreachableSpec
|
class LeaderDowningNodeThatIsUnreachableWithFailureDetectorPuppetMultiJvmNode3 extends LeaderDowningNodeThatIsUnreachableSpec with FailureDetectorPuppetStrategy
|
||||||
class LeaderDowningNodeThatIsUnreachableMultiJvmNode4 extends LeaderDowningNodeThatIsUnreachableSpec
|
class LeaderDowningNodeThatIsUnreachableWithFailureDetectorPuppetMultiJvmNode4 extends LeaderDowningNodeThatIsUnreachableSpec with FailureDetectorPuppetStrategy
|
||||||
|
|
||||||
class LeaderDowningNodeThatIsUnreachableSpec
|
class LeaderDowningNodeThatIsUnreachableWithAccrualFailureDetectorMultiJvmNode1 extends LeaderDowningNodeThatIsUnreachableSpec with AccrualFailureDetectorStrategy
|
||||||
|
class LeaderDowningNodeThatIsUnreachableWithAccrualFailureDetectorMultiJvmNode2 extends LeaderDowningNodeThatIsUnreachableSpec with AccrualFailureDetectorStrategy
|
||||||
|
class LeaderDowningNodeThatIsUnreachableWithAccrualFailureDetectorMultiJvmNode3 extends LeaderDowningNodeThatIsUnreachableSpec with AccrualFailureDetectorStrategy
|
||||||
|
class LeaderDowningNodeThatIsUnreachableWithAccrualFailureDetectorMultiJvmNode4 extends LeaderDowningNodeThatIsUnreachableSpec with AccrualFailureDetectorStrategy
|
||||||
|
|
||||||
|
abstract class LeaderDowningNodeThatIsUnreachableSpec
|
||||||
extends MultiNodeSpec(LeaderDowningNodeThatIsUnreachableMultiJvmSpec)
|
extends MultiNodeSpec(LeaderDowningNodeThatIsUnreachableMultiJvmSpec)
|
||||||
with MultiNodeClusterSpec {
|
with MultiNodeClusterSpec {
|
||||||
|
|
||||||
import LeaderDowningNodeThatIsUnreachableMultiJvmSpec._
|
import LeaderDowningNodeThatIsUnreachableMultiJvmSpec._
|
||||||
|
|
||||||
// Set up the puppet failure detector
|
|
||||||
lazy val failureDetector = new FailureDetectorPuppet(system = system)
|
|
||||||
lazy val clusterNode = new Cluster(system.asInstanceOf[ExtendedActorSystem], failureDetector)
|
|
||||||
|
|
||||||
override def cluster = clusterNode
|
|
||||||
|
|
||||||
"The Leader in a 4 node cluster" must {
|
"The Leader in a 4 node cluster" must {
|
||||||
|
|
||||||
"be able to DOWN a 'last' node that is UNREACHABLE" taggedAs LongRunningTest in {
|
"be able to DOWN a 'last' node that is UNREACHABLE" taggedAs LongRunningTest in {
|
||||||
|
|
@ -52,7 +51,7 @@ class LeaderDowningNodeThatIsUnreachableSpec
|
||||||
testConductor.enter("down-fourth-node")
|
testConductor.enter("down-fourth-node")
|
||||||
|
|
||||||
// mark the node as unreachable in the failure detector
|
// mark the node as unreachable in the failure detector
|
||||||
failureDetector markAsDown fourthAddress
|
markNodeAsUnavailable(fourthAddress)
|
||||||
|
|
||||||
// --- HERE THE LEADER SHOULD DETECT FAILURE AND AUTO-DOWN THE UNREACHABLE NODE ---
|
// --- HERE THE LEADER SHOULD DETECT FAILURE AND AUTO-DOWN THE UNREACHABLE NODE ---
|
||||||
|
|
||||||
|
|
@ -82,7 +81,7 @@ class LeaderDowningNodeThatIsUnreachableSpec
|
||||||
testConductor.enter("down-second-node")
|
testConductor.enter("down-second-node")
|
||||||
|
|
||||||
// mark the node as unreachable in the failure detector
|
// mark the node as unreachable in the failure detector
|
||||||
failureDetector markAsDown secondAddress
|
markNodeAsUnavailable(secondAddress)
|
||||||
|
|
||||||
// --- HERE THE LEADER SHOULD DETECT FAILURE AND AUTO-DOWN THE UNREACHABLE NODE ---
|
// --- HERE THE LEADER SHOULD DETECT FAILURE AND AUTO-DOWN THE UNREACHABLE NODE ---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -19,11 +19,11 @@ object LeaderElectionMultiJvmSpec extends MultiNodeConfig {
|
||||||
commonConfig(debugConfig(on = false).withFallback(MultiNodeClusterSpec.clusterConfig))
|
commonConfig(debugConfig(on = false).withFallback(MultiNodeClusterSpec.clusterConfig))
|
||||||
}
|
}
|
||||||
|
|
||||||
class LeaderElectionMultiJvmNode1 extends LeaderElectionSpec
|
class LeaderElectionMultiJvmNode1 extends LeaderElectionSpec with AccrualFailureDetectorStrategy
|
||||||
class LeaderElectionMultiJvmNode2 extends LeaderElectionSpec
|
class LeaderElectionMultiJvmNode2 extends LeaderElectionSpec with AccrualFailureDetectorStrategy
|
||||||
class LeaderElectionMultiJvmNode3 extends LeaderElectionSpec
|
class LeaderElectionMultiJvmNode3 extends LeaderElectionSpec with AccrualFailureDetectorStrategy
|
||||||
class LeaderElectionMultiJvmNode4 extends LeaderElectionSpec
|
class LeaderElectionMultiJvmNode4 extends LeaderElectionSpec with AccrualFailureDetectorStrategy
|
||||||
class LeaderElectionMultiJvmNode5 extends LeaderElectionSpec
|
class LeaderElectionMultiJvmNode5 extends LeaderElectionSpec with AccrualFailureDetectorStrategy
|
||||||
|
|
||||||
abstract class LeaderElectionSpec
|
abstract class LeaderElectionSpec
|
||||||
extends MultiNodeSpec(LeaderElectionMultiJvmSpec)
|
extends MultiNodeSpec(LeaderElectionMultiJvmSpec)
|
||||||
|
|
|
||||||
|
|
@ -27,9 +27,9 @@ object MembershipChangeListenerExitingMultiJvmSpec extends MultiNodeConfig {
|
||||||
.withFallback(MultiNodeClusterSpec.clusterConfig)))
|
.withFallback(MultiNodeClusterSpec.clusterConfig)))
|
||||||
}
|
}
|
||||||
|
|
||||||
class MembershipChangeListenerExitingMultiJvmNode1 extends MembershipChangeListenerExitingSpec
|
class MembershipChangeListenerExitingMultiJvmNode1 extends MembershipChangeListenerExitingSpec with AccrualFailureDetectorStrategy
|
||||||
class MembershipChangeListenerExitingMultiJvmNode2 extends MembershipChangeListenerExitingSpec
|
class MembershipChangeListenerExitingMultiJvmNode2 extends MembershipChangeListenerExitingSpec with AccrualFailureDetectorStrategy
|
||||||
class MembershipChangeListenerExitingMultiJvmNode3 extends MembershipChangeListenerExitingSpec
|
class MembershipChangeListenerExitingMultiJvmNode3 extends MembershipChangeListenerExitingSpec with AccrualFailureDetectorStrategy
|
||||||
|
|
||||||
abstract class MembershipChangeListenerExitingSpec
|
abstract class MembershipChangeListenerExitingSpec
|
||||||
extends MultiNodeSpec(MembershipChangeListenerExitingMultiJvmSpec)
|
extends MultiNodeSpec(MembershipChangeListenerExitingMultiJvmSpec)
|
||||||
|
|
|
||||||
|
|
@ -25,8 +25,8 @@ object MembershipChangeListenerJoinMultiJvmSpec extends MultiNodeConfig {
|
||||||
.withFallback(MultiNodeClusterSpec.clusterConfig)))
|
.withFallback(MultiNodeClusterSpec.clusterConfig)))
|
||||||
}
|
}
|
||||||
|
|
||||||
class MembershipChangeListenerJoinMultiJvmNode1 extends MembershipChangeListenerJoinSpec
|
class MembershipChangeListenerJoinMultiJvmNode1 extends MembershipChangeListenerJoinSpec with AccrualFailureDetectorStrategy
|
||||||
class MembershipChangeListenerJoinMultiJvmNode2 extends MembershipChangeListenerJoinSpec
|
class MembershipChangeListenerJoinMultiJvmNode2 extends MembershipChangeListenerJoinSpec with AccrualFailureDetectorStrategy
|
||||||
|
|
||||||
abstract class MembershipChangeListenerJoinSpec
|
abstract class MembershipChangeListenerJoinSpec
|
||||||
extends MultiNodeSpec(MembershipChangeListenerJoinMultiJvmSpec)
|
extends MultiNodeSpec(MembershipChangeListenerJoinMultiJvmSpec)
|
||||||
|
|
|
||||||
|
|
@ -24,9 +24,9 @@ object MembershipChangeListenerLeavingMultiJvmSpec extends MultiNodeConfig {
|
||||||
.withFallback(MultiNodeClusterSpec.clusterConfig))
|
.withFallback(MultiNodeClusterSpec.clusterConfig))
|
||||||
}
|
}
|
||||||
|
|
||||||
class MembershipChangeListenerLeavingMultiJvmNode1 extends MembershipChangeListenerLeavingSpec
|
class MembershipChangeListenerLeavingMultiJvmNode1 extends MembershipChangeListenerLeavingSpec with AccrualFailureDetectorStrategy
|
||||||
class MembershipChangeListenerLeavingMultiJvmNode2 extends MembershipChangeListenerLeavingSpec
|
class MembershipChangeListenerLeavingMultiJvmNode2 extends MembershipChangeListenerLeavingSpec with AccrualFailureDetectorStrategy
|
||||||
class MembershipChangeListenerLeavingMultiJvmNode3 extends MembershipChangeListenerLeavingSpec
|
class MembershipChangeListenerLeavingMultiJvmNode3 extends MembershipChangeListenerLeavingSpec with AccrualFailureDetectorStrategy
|
||||||
|
|
||||||
abstract class MembershipChangeListenerLeavingSpec
|
abstract class MembershipChangeListenerLeavingSpec
|
||||||
extends MultiNodeSpec(MembershipChangeListenerLeavingMultiJvmSpec)
|
extends MultiNodeSpec(MembershipChangeListenerLeavingMultiJvmSpec)
|
||||||
|
|
|
||||||
|
|
@ -17,9 +17,9 @@ object MembershipChangeListenerMultiJvmSpec extends MultiNodeConfig {
|
||||||
commonConfig(debugConfig(on = false).withFallback(MultiNodeClusterSpec.clusterConfig))
|
commonConfig(debugConfig(on = false).withFallback(MultiNodeClusterSpec.clusterConfig))
|
||||||
}
|
}
|
||||||
|
|
||||||
class MembershipChangeListenerMultiJvmNode1 extends MembershipChangeListenerSpec
|
class MembershipChangeListenerMultiJvmNode1 extends MembershipChangeListenerSpec with AccrualFailureDetectorStrategy
|
||||||
class MembershipChangeListenerMultiJvmNode2 extends MembershipChangeListenerSpec
|
class MembershipChangeListenerMultiJvmNode2 extends MembershipChangeListenerSpec with AccrualFailureDetectorStrategy
|
||||||
class MembershipChangeListenerMultiJvmNode3 extends MembershipChangeListenerSpec
|
class MembershipChangeListenerMultiJvmNode3 extends MembershipChangeListenerSpec with AccrualFailureDetectorStrategy
|
||||||
|
|
||||||
abstract class MembershipChangeListenerSpec extends MultiNodeSpec(MembershipChangeListenerMultiJvmSpec)
|
abstract class MembershipChangeListenerSpec extends MultiNodeSpec(MembershipChangeListenerMultiJvmSpec)
|
||||||
with MultiNodeClusterSpec {
|
with MultiNodeClusterSpec {
|
||||||
|
|
|
||||||
|
|
@ -18,8 +18,8 @@ object MembershipChangeListenerUpMultiJvmSpec extends MultiNodeConfig {
|
||||||
commonConfig(debugConfig(on = false).withFallback(MultiNodeClusterSpec.clusterConfig))
|
commonConfig(debugConfig(on = false).withFallback(MultiNodeClusterSpec.clusterConfig))
|
||||||
}
|
}
|
||||||
|
|
||||||
class MembershipChangeListenerUpMultiJvmNode1 extends MembershipChangeListenerUpSpec
|
class MembershipChangeListenerUpMultiJvmNode1 extends MembershipChangeListenerUpSpec with AccrualFailureDetectorStrategy
|
||||||
class MembershipChangeListenerUpMultiJvmNode2 extends MembershipChangeListenerUpSpec
|
class MembershipChangeListenerUpMultiJvmNode2 extends MembershipChangeListenerUpSpec with AccrualFailureDetectorStrategy
|
||||||
|
|
||||||
abstract class MembershipChangeListenerUpSpec
|
abstract class MembershipChangeListenerUpSpec
|
||||||
extends MultiNodeSpec(MembershipChangeListenerUpMultiJvmSpec)
|
extends MultiNodeSpec(MembershipChangeListenerUpMultiJvmSpec)
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ package akka.cluster
|
||||||
|
|
||||||
import com.typesafe.config.Config
|
import com.typesafe.config.Config
|
||||||
import com.typesafe.config.ConfigFactory
|
import com.typesafe.config.ConfigFactory
|
||||||
import akka.actor.Address
|
import akka.actor.{Address, ExtendedActorSystem}
|
||||||
import akka.remote.testconductor.RoleName
|
import akka.remote.testconductor.RoleName
|
||||||
import akka.remote.testkit.MultiNodeSpec
|
import akka.remote.testkit.MultiNodeSpec
|
||||||
import akka.testkit._
|
import akka.testkit._
|
||||||
|
|
@ -28,14 +28,19 @@ object MultiNodeClusterSpec {
|
||||||
""")
|
""")
|
||||||
}
|
}
|
||||||
|
|
||||||
trait MultiNodeClusterSpec { self: MultiNodeSpec ⇒
|
trait MultiNodeClusterSpec extends FailureDetectorStrategy { self: MultiNodeSpec ⇒
|
||||||
|
|
||||||
override def initialParticipants = roles.size
|
override def initialParticipants = roles.size
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get or create a cluster node using 'Cluster(system)' extension.
|
* The cluster node instance. Needs to be lazily created.
|
||||||
*/
|
*/
|
||||||
def cluster: Cluster = Cluster(system)
|
private lazy val clusterNode = new Cluster(system.asInstanceOf[ExtendedActorSystem], failureDetector)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the cluster node to use.
|
||||||
|
*/
|
||||||
|
def cluster: Cluster = clusterNode
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Use this method instead of 'cluster.self'
|
* Use this method instead of 'cluster.self'
|
||||||
|
|
@ -48,9 +53,7 @@ trait MultiNodeClusterSpec { self: MultiNodeSpec ⇒
|
||||||
* nodes (roles). First node will be started first
|
* nodes (roles). First node will be started first
|
||||||
* and others will join the first.
|
* and others will join the first.
|
||||||
*/
|
*/
|
||||||
def startCluster(roles: RoleName*): Unit = {
|
def startCluster(roles: RoleName*): Unit = awaitStartCluster(false, roles.toSeq)
|
||||||
awaitStartCluster(false, roles.toSeq)
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initialize the cluster of the specified member
|
* Initialize the cluster of the specified member
|
||||||
|
|
|
||||||
|
|
@ -24,8 +24,8 @@ object NodeJoinMultiJvmSpec extends MultiNodeConfig {
|
||||||
.withFallback(MultiNodeClusterSpec.clusterConfig)))
|
.withFallback(MultiNodeClusterSpec.clusterConfig)))
|
||||||
}
|
}
|
||||||
|
|
||||||
class NodeJoinMultiJvmNode1 extends NodeJoinSpec
|
class NodeJoinMultiJvmNode1 extends NodeJoinSpec with AccrualFailureDetectorStrategy
|
||||||
class NodeJoinMultiJvmNode2 extends NodeJoinSpec
|
class NodeJoinMultiJvmNode2 extends NodeJoinSpec with AccrualFailureDetectorStrategy
|
||||||
|
|
||||||
abstract class NodeJoinSpec
|
abstract class NodeJoinSpec
|
||||||
extends MultiNodeSpec(NodeJoinMultiJvmSpec)
|
extends MultiNodeSpec(NodeJoinMultiJvmSpec)
|
||||||
|
|
|
||||||
|
|
@ -18,9 +18,9 @@ object NodeLeavingAndExitingAndBeingRemovedMultiJvmSpec extends MultiNodeConfig
|
||||||
commonConfig(debugConfig(on = false).withFallback(MultiNodeClusterSpec.clusterConfig))
|
commonConfig(debugConfig(on = false).withFallback(MultiNodeClusterSpec.clusterConfig))
|
||||||
}
|
}
|
||||||
|
|
||||||
class NodeLeavingAndExitingAndBeingRemovedMultiJvmNode1 extends NodeLeavingAndExitingAndBeingRemovedSpec
|
class NodeLeavingAndExitingAndBeingRemovedMultiJvmNode1 extends NodeLeavingAndExitingAndBeingRemovedSpec with AccrualFailureDetectorStrategy
|
||||||
class NodeLeavingAndExitingAndBeingRemovedMultiJvmNode2 extends NodeLeavingAndExitingAndBeingRemovedSpec
|
class NodeLeavingAndExitingAndBeingRemovedMultiJvmNode2 extends NodeLeavingAndExitingAndBeingRemovedSpec with AccrualFailureDetectorStrategy
|
||||||
class NodeLeavingAndExitingAndBeingRemovedMultiJvmNode3 extends NodeLeavingAndExitingAndBeingRemovedSpec
|
class NodeLeavingAndExitingAndBeingRemovedMultiJvmNode3 extends NodeLeavingAndExitingAndBeingRemovedSpec with AccrualFailureDetectorStrategy
|
||||||
|
|
||||||
abstract class NodeLeavingAndExitingAndBeingRemovedSpec
|
abstract class NodeLeavingAndExitingAndBeingRemovedSpec
|
||||||
extends MultiNodeSpec(NodeLeavingAndExitingAndBeingRemovedMultiJvmSpec)
|
extends MultiNodeSpec(NodeLeavingAndExitingAndBeingRemovedMultiJvmSpec)
|
||||||
|
|
|
||||||
|
|
@ -26,9 +26,9 @@ object NodeLeavingAndExitingMultiJvmSpec extends MultiNodeConfig {
|
||||||
.withFallback(MultiNodeClusterSpec.clusterConfig)))
|
.withFallback(MultiNodeClusterSpec.clusterConfig)))
|
||||||
}
|
}
|
||||||
|
|
||||||
class NodeLeavingAndExitingMultiJvmNode1 extends NodeLeavingAndExitingSpec
|
class NodeLeavingAndExitingMultiJvmNode1 extends NodeLeavingAndExitingSpec with AccrualFailureDetectorStrategy
|
||||||
class NodeLeavingAndExitingMultiJvmNode2 extends NodeLeavingAndExitingSpec
|
class NodeLeavingAndExitingMultiJvmNode2 extends NodeLeavingAndExitingSpec with AccrualFailureDetectorStrategy
|
||||||
class NodeLeavingAndExitingMultiJvmNode3 extends NodeLeavingAndExitingSpec
|
class NodeLeavingAndExitingMultiJvmNode3 extends NodeLeavingAndExitingSpec with AccrualFailureDetectorStrategy
|
||||||
|
|
||||||
abstract class NodeLeavingAndExitingSpec
|
abstract class NodeLeavingAndExitingSpec
|
||||||
extends MultiNodeSpec(NodeLeavingAndExitingMultiJvmSpec)
|
extends MultiNodeSpec(NodeLeavingAndExitingMultiJvmSpec)
|
||||||
|
|
|
||||||
|
|
@ -22,9 +22,9 @@ object NodeLeavingMultiJvmSpec extends MultiNodeConfig {
|
||||||
.withFallback(MultiNodeClusterSpec.clusterConfig))
|
.withFallback(MultiNodeClusterSpec.clusterConfig))
|
||||||
}
|
}
|
||||||
|
|
||||||
class NodeLeavingMultiJvmNode1 extends NodeLeavingSpec
|
class NodeLeavingMultiJvmNode1 extends NodeLeavingSpec with AccrualFailureDetectorStrategy
|
||||||
class NodeLeavingMultiJvmNode2 extends NodeLeavingSpec
|
class NodeLeavingMultiJvmNode2 extends NodeLeavingSpec with AccrualFailureDetectorStrategy
|
||||||
class NodeLeavingMultiJvmNode3 extends NodeLeavingSpec
|
class NodeLeavingMultiJvmNode3 extends NodeLeavingSpec with AccrualFailureDetectorStrategy
|
||||||
|
|
||||||
abstract class NodeLeavingSpec extends MultiNodeSpec(NodeLeavingMultiJvmSpec)
|
abstract class NodeLeavingSpec extends MultiNodeSpec(NodeLeavingMultiJvmSpec)
|
||||||
with MultiNodeClusterSpec {
|
with MultiNodeClusterSpec {
|
||||||
|
|
|
||||||
|
|
@ -16,9 +16,9 @@ object NodeMembershipMultiJvmSpec extends MultiNodeConfig {
|
||||||
commonConfig(debugConfig(on = false).withFallback(MultiNodeClusterSpec.clusterConfig))
|
commonConfig(debugConfig(on = false).withFallback(MultiNodeClusterSpec.clusterConfig))
|
||||||
}
|
}
|
||||||
|
|
||||||
class NodeMembershipMultiJvmNode1 extends NodeMembershipSpec
|
class NodeMembershipMultiJvmNode1 extends NodeMembershipSpec with AccrualFailureDetectorStrategy
|
||||||
class NodeMembershipMultiJvmNode2 extends NodeMembershipSpec
|
class NodeMembershipMultiJvmNode2 extends NodeMembershipSpec with AccrualFailureDetectorStrategy
|
||||||
class NodeMembershipMultiJvmNode3 extends NodeMembershipSpec
|
class NodeMembershipMultiJvmNode3 extends NodeMembershipSpec with AccrualFailureDetectorStrategy
|
||||||
|
|
||||||
abstract class NodeMembershipSpec
|
abstract class NodeMembershipSpec
|
||||||
extends MultiNodeSpec(NodeMembershipMultiJvmSpec)
|
extends MultiNodeSpec(NodeMembershipMultiJvmSpec)
|
||||||
|
|
|
||||||
|
|
@ -24,8 +24,8 @@ object NodeShutdownMultiJvmSpec extends MultiNodeConfig {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class NodeShutdownMultiJvmNode1 extends NodeShutdownSpec
|
class NodeShutdownMultiJvmNode1 extends NodeShutdownSpec with AccrualFailureDetectorStrategy
|
||||||
class NodeShutdownMultiJvmNode2 extends NodeShutdownSpec
|
class NodeShutdownMultiJvmNode2 extends NodeShutdownSpec with AccrualFailureDetectorStrategy
|
||||||
|
|
||||||
abstract class NodeShutdownSpec extends MultiNodeSpec(NodeShutdownMultiJvmSpec) with MultiNodeClusterSpec {
|
abstract class NodeShutdownSpec extends MultiNodeSpec(NodeShutdownMultiJvmSpec) with MultiNodeClusterSpec {
|
||||||
import NodeShutdownMultiJvmSpec._
|
import NodeShutdownMultiJvmSpec._
|
||||||
|
|
|
||||||
|
|
@ -19,8 +19,8 @@ object NodeUpMultiJvmSpec extends MultiNodeConfig {
|
||||||
commonConfig(debugConfig(on = false).withFallback(MultiNodeClusterSpec.clusterConfig))
|
commonConfig(debugConfig(on = false).withFallback(MultiNodeClusterSpec.clusterConfig))
|
||||||
}
|
}
|
||||||
|
|
||||||
class NodeUpMultiJvmNode1 extends NodeUpSpec
|
class NodeUpMultiJvmNode1 extends NodeUpSpec with AccrualFailureDetectorStrategy
|
||||||
class NodeUpMultiJvmNode2 extends NodeUpSpec
|
class NodeUpMultiJvmNode2 extends NodeUpSpec with AccrualFailureDetectorStrategy
|
||||||
|
|
||||||
abstract class NodeUpSpec
|
abstract class NodeUpSpec
|
||||||
extends MultiNodeSpec(NodeUpMultiJvmSpec)
|
extends MultiNodeSpec(NodeUpMultiJvmSpec)
|
||||||
|
|
|
||||||
|
|
@ -28,11 +28,11 @@ object SunnyWeatherMultiJvmSpec extends MultiNodeConfig {
|
||||||
"""))
|
"""))
|
||||||
}
|
}
|
||||||
|
|
||||||
class SunnyWeatherMultiJvmNode1 extends SunnyWeatherSpec
|
class SunnyWeatherMultiJvmNode1 extends SunnyWeatherSpec with AccrualFailureDetectorStrategy
|
||||||
class SunnyWeatherMultiJvmNode2 extends SunnyWeatherSpec
|
class SunnyWeatherMultiJvmNode2 extends SunnyWeatherSpec with AccrualFailureDetectorStrategy
|
||||||
class SunnyWeatherMultiJvmNode3 extends SunnyWeatherSpec
|
class SunnyWeatherMultiJvmNode3 extends SunnyWeatherSpec with AccrualFailureDetectorStrategy
|
||||||
class SunnyWeatherMultiJvmNode4 extends SunnyWeatherSpec
|
class SunnyWeatherMultiJvmNode4 extends SunnyWeatherSpec with AccrualFailureDetectorStrategy
|
||||||
class SunnyWeatherMultiJvmNode5 extends SunnyWeatherSpec
|
class SunnyWeatherMultiJvmNode5 extends SunnyWeatherSpec with AccrualFailureDetectorStrategy
|
||||||
|
|
||||||
abstract class SunnyWeatherSpec
|
abstract class SunnyWeatherSpec
|
||||||
extends MultiNodeSpec(SunnyWeatherMultiJvmSpec)
|
extends MultiNodeSpec(SunnyWeatherMultiJvmSpec)
|
||||||
|
|
|
||||||
|
|
@ -28,12 +28,12 @@ class FailureDetectorPuppet(system: ActorSystem, settings: ClusterSettings) exte
|
||||||
|
|
||||||
private val connections = new ConcurrentHashMap[Address, Status]
|
private val connections = new ConcurrentHashMap[Address, Status]
|
||||||
|
|
||||||
def markAsDown(connection: Address): this.type = {
|
def markNodeAsUnavailable(connection: Address): this.type = {
|
||||||
connections.put(connection, Down)
|
connections.put(connection, Down)
|
||||||
this
|
this
|
||||||
}
|
}
|
||||||
|
|
||||||
def markAsUp(connection: Address): this.type = {
|
def markNodeAsAvailable(connection: Address): this.type = {
|
||||||
connections.put(connection, Up)
|
connections.put(connection, Up)
|
||||||
this
|
this
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue