2015-05-17 12:28:47 +02:00
|
|
|
/**
|
2017-01-04 17:37:10 +01:00
|
|
|
* Copyright (C) 2009-2017 Lightbend Inc. <http://www.lightbend.com>
|
2015-05-17 12:28:47 +02:00
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
package akka.cluster.ddata
|
|
|
|
|
|
|
|
|
|
import akka.actor.Address
|
|
|
|
|
import akka.cluster.UniqueAddress
|
|
|
|
|
import org.scalatest.Matchers
|
|
|
|
|
import org.scalatest.WordSpec
|
|
|
|
|
|
|
|
|
|
class PruningStateSpec extends WordSpec with Matchers {
|
|
|
|
|
import PruningState._
|
|
|
|
|
|
2017-01-11 13:19:45 +01:00
|
|
|
val node1 = UniqueAddress(Address("akka.tcp", "Sys", "localhost", 2551), 1L)
|
|
|
|
|
val node2 = UniqueAddress(node1.address.copy(port = Some(2552)), 2L)
|
|
|
|
|
val node3 = UniqueAddress(node1.address.copy(port = Some(2553)), 3L)
|
|
|
|
|
val node4 = UniqueAddress(node1.address.copy(port = Some(2554)), 4L)
|
2015-05-17 12:28:47 +02:00
|
|
|
|
|
|
|
|
"Pruning state" must {
|
|
|
|
|
|
2017-01-11 13:19:45 +01:00
|
|
|
"merge state correctly" in {
|
|
|
|
|
val p1 = PruningInitialized(node1, Set.empty)
|
|
|
|
|
val p2 = PruningPerformed(System.currentTimeMillis() + 3600 * 1000)
|
|
|
|
|
p1.merge(p2) should be(p2)
|
|
|
|
|
p2.merge(p1) should be(p2)
|
|
|
|
|
|
|
|
|
|
val p3 = p2.copy(p2.obsoleteTime - 1)
|
|
|
|
|
p2.merge(p3) should be(p2) // keep greatest obsoleteTime
|
|
|
|
|
p3.merge(p2) should be(p2)
|
|
|
|
|
|
2015-05-17 12:28:47 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
"merge owner correctly" in {
|
2017-01-11 13:19:45 +01:00
|
|
|
val p1 = PruningInitialized(node1, Set.empty)
|
|
|
|
|
val p2 = PruningInitialized(node2, Set.empty)
|
|
|
|
|
val expected = PruningInitialized(node1, Set.empty)
|
2015-05-17 12:28:47 +02:00
|
|
|
p1.merge(p2) should be(expected)
|
|
|
|
|
p2.merge(p1) should be(expected)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
"merge seen correctly" in {
|
2017-01-11 13:19:45 +01:00
|
|
|
val p1 = PruningInitialized(node1, Set(node2.address))
|
|
|
|
|
val p2 = PruningInitialized(node1, Set(node4.address))
|
|
|
|
|
val expected = PruningInitialized(node1, Set(node2.address, node4.address))
|
2015-05-17 12:28:47 +02:00
|
|
|
p1.merge(p2) should be(expected)
|
|
|
|
|
p2.merge(p1) should be(expected)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|