Rename + operator of VectorClock and Versioned to :+

* + is kind of reserved for string concatination
This commit is contained in:
Patrik Nordwall 2012-06-12 16:15:05 +02:00
parent de1ad30217
commit 92cab53b1e
3 changed files with 95 additions and 95 deletions

View file

@ -195,9 +195,9 @@ case class Gossip(
/**
* Increments the version for this 'Node'.
*/
def +(node: VectorClock.Node): Gossip = copy(version = version + node)
def :+(node: VectorClock.Node): Gossip = copy(version = version :+ node)
def +(member: Member): Gossip = {
def :+(member: Member): Gossip = {
if (members contains member) this
else this copy (members = members + member)
}
@ -424,7 +424,7 @@ class Cluster(system: ExtendedActorSystem, val failureDetector: FailureDetector)
private val state = {
val member = Member(selfAddress, MemberStatus.Joining)
val versionedGossip = Gossip(members = Gossip.emptyMembers + member) + vclockNode // add me as member and update my vector clock
val versionedGossip = Gossip(members = Gossip.emptyMembers + member) :+ vclockNode // add me as member and update my vector clock
val seenVersionedGossip = versionedGossip seen selfAddress
new AtomicReference[State](State(seenVersionedGossip))
}
@ -658,7 +658,7 @@ class Cluster(system: ExtendedActorSystem, val failureDetector: FailureDetector)
val newMembers = localMembers + Member(node, MemberStatus.Joining) // add joining node as Joining
val newGossip = localGossip copy (overview = newOverview, members = newMembers)
val versionedGossip = newGossip + vclockNode
val versionedGossip = newGossip :+ vclockNode
val seenVersionedGossip = versionedGossip seen selfAddress
val newState = localState copy (latestGossip = seenVersionedGossip)
@ -686,7 +686,7 @@ class Cluster(system: ExtendedActorSystem, val failureDetector: FailureDetector)
val newMembers = localMembers + Member(address, MemberStatus.Leaving) // mark node as LEAVING
val newGossip = localGossip copy (members = newMembers)
val versionedGossip = newGossip + vclockNode
val versionedGossip = newGossip :+ vclockNode
val seenVersionedGossip = versionedGossip seen selfAddress
val newState = localState copy (latestGossip = seenVersionedGossip)
@ -772,7 +772,7 @@ class Cluster(system: ExtendedActorSystem, val failureDetector: FailureDetector)
val newOverview = localOverview copy (seen = newSeen, unreachable = newUnreachablePlusNewlyDownedMembers) // update gossip overview
val newGossip = localGossip copy (overview = newOverview, members = newMembers) // update gossip
val versionedGossip = newGossip + vclockNode
val versionedGossip = newGossip :+ vclockNode
val newState = localState copy (latestGossip = versionedGossip seen selfAddress)
if (!state.compareAndSet(localState, newState)) downing(address) // recur if we fail the update
@ -793,7 +793,7 @@ class Cluster(system: ExtendedActorSystem, val failureDetector: FailureDetector)
if (remoteGossip.version <> localGossip.version) {
// concurrent
val mergedGossip = remoteGossip merge localGossip
val versionedMergedGossip = mergedGossip + vclockNode
val versionedMergedGossip = mergedGossip :+ vclockNode
// FIXME change to debug log level, when failure detector is stable
log.info(
@ -855,7 +855,7 @@ class Cluster(system: ExtendedActorSystem, val failureDetector: FailureDetector)
val newGossip = localGossip copy (members = newMembers)
// version my changes
val versionedGossip = newGossip + vclockNode
val versionedGossip = newGossip :+ vclockNode
val seenVersionedGossip = versionedGossip seen selfAddress
state copy (latestGossip = seenVersionedGossip)
@ -992,7 +992,7 @@ class Cluster(system: ExtendedActorSystem, val failureDetector: FailureDetector)
val newGossip = localGossip copy (overview = newOverview, members = newMembers)
// updating vclock and 'seen' table
val versionedGossip = newGossip + vclockNode
val versionedGossip = newGossip :+ vclockNode
val seenVersionedGossip = versionedGossip seen selfAddress
val newState = localState copy (latestGossip = seenVersionedGossip)
@ -1111,7 +1111,7 @@ class Cluster(system: ExtendedActorSystem, val failureDetector: FailureDetector)
// ----------------------
// 5. Updating the vclock version for the changes
// ----------------------
val versionedGossip = newGossip + vclockNode
val versionedGossip = newGossip :+ vclockNode
// ----------------------
// 6. Updating the 'seen' table

View file

@ -19,7 +19,7 @@ class VectorClockException(message: String) extends AkkaException(message)
*/
trait Versioned[T] {
def version: VectorClock
def +(node: VectorClock.Node): T
def :+(node: VectorClock.Node): T
}
/**
@ -142,7 +142,7 @@ case class VectorClock(
/**
* Increment the version for the node passed as argument. Returns a new VectorClock.
*/
def +(node: Node): VectorClock = copy(versions = versions + (node -> Timestamp()))
def :+(node: Node): VectorClock = copy(versions = versions + (node -> Timestamp()))
/**
* Returns true if <code>this</code> and <code>that</code> are concurrent else false.

View file

@ -27,67 +27,67 @@ class VectorClockSpec extends AkkaSpec {
"pass misc comparison test 1" in {
val clock1_1 = VectorClock()
val clock2_1 = clock1_1 + Node("1")
val clock3_1 = clock2_1 + Node("2")
val clock4_1 = clock3_1 + Node("1")
val clock2_1 = clock1_1 :+ Node("1")
val clock3_1 = clock2_1 :+ Node("2")
val clock4_1 = clock3_1 :+ Node("1")
val clock1_2 = VectorClock()
val clock2_2 = clock1_2 + Node("1")
val clock3_2 = clock2_2 + Node("2")
val clock4_2 = clock3_2 + Node("1")
val clock2_2 = clock1_2 :+ Node("1")
val clock3_2 = clock2_2 :+ Node("2")
val clock4_2 = clock3_2 :+ Node("1")
clock4_1 <> clock4_2 must be(false)
}
"pass misc comparison test 2" in {
val clock1_1 = VectorClock()
val clock2_1 = clock1_1 + Node("1")
val clock3_1 = clock2_1 + Node("2")
val clock4_1 = clock3_1 + Node("1")
val clock2_1 = clock1_1 :+ Node("1")
val clock3_1 = clock2_1 :+ Node("2")
val clock4_1 = clock3_1 :+ Node("1")
val clock1_2 = VectorClock()
val clock2_2 = clock1_2 + Node("1")
val clock3_2 = clock2_2 + Node("2")
val clock4_2 = clock3_2 + Node("1")
val clock5_2 = clock4_2 + Node("3")
val clock2_2 = clock1_2 :+ Node("1")
val clock3_2 = clock2_2 :+ Node("2")
val clock4_2 = clock3_2 :+ Node("1")
val clock5_2 = clock4_2 :+ Node("3")
clock4_1 < clock5_2 must be(true)
}
"pass misc comparison test 3" in {
var clock1_1 = VectorClock()
val clock2_1 = clock1_1 + Node("1")
val clock2_1 = clock1_1 :+ Node("1")
val clock1_2 = VectorClock()
val clock2_2 = clock1_2 + Node("2")
val clock2_2 = clock1_2 :+ Node("2")
clock2_1 <> clock2_2 must be(true)
}
"pass misc comparison test 4" in {
val clock1_3 = VectorClock()
val clock2_3 = clock1_3 + Node("1")
val clock3_3 = clock2_3 + Node("2")
val clock4_3 = clock3_3 + Node("1")
val clock2_3 = clock1_3 :+ Node("1")
val clock3_3 = clock2_3 :+ Node("2")
val clock4_3 = clock3_3 :+ Node("1")
val clock1_4 = VectorClock()
val clock2_4 = clock1_4 + Node("1")
val clock3_4 = clock2_4 + Node("1")
val clock4_4 = clock3_4 + Node("3")
val clock2_4 = clock1_4 :+ Node("1")
val clock3_4 = clock2_4 :+ Node("1")
val clock4_4 = clock3_4 :+ Node("3")
clock4_3 <> clock4_4 must be(true)
}
"pass misc comparison test 5" in {
val clock1_1 = VectorClock()
val clock2_1 = clock1_1 + Node("2")
val clock3_1 = clock2_1 + Node("2")
val clock2_1 = clock1_1 :+ Node("2")
val clock3_1 = clock2_1 :+ Node("2")
val clock1_2 = VectorClock()
val clock2_2 = clock1_2 + Node("1")
val clock3_2 = clock2_2 + Node("2")
val clock4_2 = clock3_2 + Node("2")
val clock5_2 = clock4_2 + Node("3")
val clock2_2 = clock1_2 :+ Node("1")
val clock3_2 = clock2_2 :+ Node("2")
val clock4_2 = clock3_2 :+ Node("2")
val clock5_2 = clock4_2 :+ Node("3")
clock3_1 < clock5_2 must be(true)
clock5_2 > clock3_1 must be(true)
@ -95,12 +95,12 @@ class VectorClockSpec extends AkkaSpec {
"pass misc comparison test 6" in {
val clock1_1 = VectorClock()
val clock2_1 = clock1_1 + Node("1")
val clock3_1 = clock2_1 + Node("2")
val clock2_1 = clock1_1 :+ Node("1")
val clock3_1 = clock2_1 :+ Node("2")
val clock1_2 = VectorClock()
val clock2_2 = clock1_2 + Node("1")
val clock3_2 = clock2_2 + Node("1")
val clock2_2 = clock1_2 :+ Node("1")
val clock3_2 = clock2_2 :+ Node("1")
clock3_1 <> clock3_2 must be(true)
clock3_2 <> clock3_1 must be(true)
@ -108,14 +108,14 @@ class VectorClockSpec extends AkkaSpec {
"pass misc comparison test 7" in {
val clock1_1 = VectorClock()
val clock2_1 = clock1_1 + Node("1")
val clock3_1 = clock2_1 + Node("2")
val clock4_1 = clock3_1 + Node("2")
val clock5_1 = clock4_1 + Node("3")
val clock2_1 = clock1_1 :+ Node("1")
val clock3_1 = clock2_1 :+ Node("2")
val clock4_1 = clock3_1 :+ Node("2")
val clock5_1 = clock4_1 :+ Node("3")
val clock1_2 = VectorClock()
val clock2_2 = clock1_2 + Node("2")
val clock3_2 = clock2_2 + Node("2")
val clock2_2 = clock1_2 :+ Node("2")
val clock3_2 = clock2_2 :+ Node("2")
clock5_1 <> clock3_2 must be(true)
clock3_2 <> clock5_1 must be(true)
@ -127,14 +127,14 @@ class VectorClockSpec extends AkkaSpec {
val node3 = Node("3")
val clock1_1 = VectorClock()
val clock2_1 = clock1_1 + node1
val clock3_1 = clock2_1 + node2
val clock4_1 = clock3_1 + node2
val clock5_1 = clock4_1 + node3
val clock2_1 = clock1_1 :+ node1
val clock3_1 = clock2_1 :+ node2
val clock4_1 = clock3_1 :+ node2
val clock5_1 = clock4_1 :+ node3
val clock1_2 = VectorClock()
val clock2_2 = clock1_2 + node2
val clock3_2 = clock2_2 + node2
val clock2_2 = clock1_2 :+ node2
val clock3_2 = clock2_2 :+ node2
val merged1 = clock3_2 merge clock5_1
merged1.versions.size must be(3)
@ -164,14 +164,14 @@ class VectorClockSpec extends AkkaSpec {
val node4 = Node("4")
val clock1_1 = VectorClock()
val clock2_1 = clock1_1 + node1
val clock3_1 = clock2_1 + node2
val clock4_1 = clock3_1 + node2
val clock5_1 = clock4_1 + node3
val clock2_1 = clock1_1 :+ node1
val clock3_1 = clock2_1 :+ node2
val clock4_1 = clock3_1 :+ node2
val clock5_1 = clock4_1 :+ node3
val clock1_2 = VectorClock()
val clock2_2 = clock1_2 + node4
val clock3_2 = clock2_2 + node4
val clock2_2 = clock1_2 :+ node4
val clock3_2 = clock2_2 :+ node4
val merged1 = clock3_2 merge clock5_1
merged1.versions.size must be(4)
@ -204,8 +204,8 @@ class VectorClockSpec extends AkkaSpec {
val v1 = VectorClock()
val v2 = VectorClock()
val vv1 = v1 + node1
val vv2 = v2 + node2
val vv1 = v1 :+ node1
val vv2 = v2 :+ node2
(vv1 > v1) must equal(true)
(vv2 > v2) must equal(true)
@ -225,12 +225,12 @@ class VectorClockSpec extends AkkaSpec {
val a = VectorClock()
val b = VectorClock()
val a1 = a + node1
val b1 = b + node2
val a1 = a :+ node1
val b1 = b :+ node2
var a2 = a1 + node1
var a2 = a1 :+ node1
var c = a2.merge(b1)
var c1 = c + node3
var c1 = c :+ node3
(c1 > a2) must equal(true)
(c1 > b1) must equal(true)
@ -239,7 +239,7 @@ class VectorClockSpec extends AkkaSpec {
"An instance of Versioned" must {
class TestVersioned(val version: VectorClock = VectorClock()) extends Versioned[TestVersioned] {
def +(node: Node): TestVersioned = new TestVersioned(version + node)
def :+(node: Node): TestVersioned = new TestVersioned(version :+ node)
}
import Versioned.latestVersionOf
@ -251,67 +251,67 @@ class VectorClockSpec extends AkkaSpec {
"happen before an identical versioned with a single additional event" in {
val versioned1_1 = new TestVersioned()
val versioned2_1 = versioned1_1 + Node("1")
val versioned3_1 = versioned2_1 + Node("2")
val versioned4_1 = versioned3_1 + Node("1")
val versioned2_1 = versioned1_1 :+ Node("1")
val versioned3_1 = versioned2_1 :+ Node("2")
val versioned4_1 = versioned3_1 :+ Node("1")
val versioned1_2 = new TestVersioned()
val versioned2_2 = versioned1_2 + Node("1")
val versioned3_2 = versioned2_2 + Node("2")
val versioned4_2 = versioned3_2 + Node("1")
val versioned5_2 = versioned4_2 + Node("3")
val versioned2_2 = versioned1_2 :+ Node("1")
val versioned3_2 = versioned2_2 :+ Node("2")
val versioned4_2 = versioned3_2 :+ Node("1")
val versioned5_2 = versioned4_2 :+ Node("3")
latestVersionOf[TestVersioned](versioned4_1, versioned5_2) must be(versioned5_2)
}
"pass misc comparison test 1" in {
var versioned1_1 = new TestVersioned()
val versioned2_1 = versioned1_1 + Node("1")
val versioned2_1 = versioned1_1 :+ Node("1")
val versioned1_2 = new TestVersioned()
val versioned2_2 = versioned1_2 + Node("2")
val versioned2_2 = versioned1_2 :+ Node("2")
latestVersionOf[TestVersioned](versioned2_1, versioned2_2) must be(versioned2_2)
}
"pass misc comparison test 2" in {
val versioned1_3 = new TestVersioned()
val versioned2_3 = versioned1_3 + Node("1")
val versioned3_3 = versioned2_3 + Node("2")
val versioned4_3 = versioned3_3 + Node("1")
val versioned2_3 = versioned1_3 :+ Node("1")
val versioned3_3 = versioned2_3 :+ Node("2")
val versioned4_3 = versioned3_3 :+ Node("1")
val versioned1_4 = new TestVersioned()
val versioned2_4 = versioned1_4 + Node("1")
val versioned3_4 = versioned2_4 + Node("1")
val versioned4_4 = versioned3_4 + Node("3")
val versioned2_4 = versioned1_4 :+ Node("1")
val versioned3_4 = versioned2_4 :+ Node("1")
val versioned4_4 = versioned3_4 :+ Node("3")
latestVersionOf[TestVersioned](versioned4_3, versioned4_4) must be(versioned4_4)
}
"pass misc comparison test 3" in {
val versioned1_1 = new TestVersioned()
val versioned2_1 = versioned1_1 + Node("2")
val versioned3_1 = versioned2_1 + Node("2")
val versioned2_1 = versioned1_1 :+ Node("2")
val versioned3_1 = versioned2_1 :+ Node("2")
val versioned1_2 = new TestVersioned()
val versioned2_2 = versioned1_2 + Node("1")
val versioned3_2 = versioned2_2 + Node("2")
val versioned4_2 = versioned3_2 + Node("2")
val versioned5_2 = versioned4_2 + Node("3")
val versioned2_2 = versioned1_2 :+ Node("1")
val versioned3_2 = versioned2_2 :+ Node("2")
val versioned4_2 = versioned3_2 :+ Node("2")
val versioned5_2 = versioned4_2 :+ Node("3")
latestVersionOf[TestVersioned](versioned3_1, versioned5_2) must be(versioned5_2)
}
"pass misc comparison test 4" in {
val versioned1_1 = new TestVersioned()
val versioned2_1 = versioned1_1 + Node("1")
val versioned3_1 = versioned2_1 + Node("2")
val versioned4_1 = versioned3_1 + Node("2")
val versioned5_1 = versioned4_1 + Node("3")
val versioned2_1 = versioned1_1 :+ Node("1")
val versioned3_1 = versioned2_1 :+ Node("2")
val versioned4_1 = versioned3_1 :+ Node("2")
val versioned5_1 = versioned4_1 :+ Node("3")
val versioned1_2 = new TestVersioned()
val versioned2_2 = versioned1_2 + Node("2")
val versioned3_2 = versioned2_2 + Node("2")
val versioned2_2 = versioned1_2 :+ Node("2")
val versioned3_2 = versioned2_2 :+ Node("2")
latestVersionOf[TestVersioned](versioned5_1, versioned3_2) must be(versioned3_2)
}