+con #3677 Limit delta in DistributedPubSubMediator
This commit is contained in:
parent
ff83edea0b
commit
11972b4497
4 changed files with 79 additions and 9 deletions
|
|
@ -18,6 +18,8 @@ import akka.remote.testkit.MultiNodeSpec
|
|||
import akka.remote.testkit.STMultiNodeSpec
|
||||
import akka.testkit._
|
||||
import akka.actor.ActorLogging
|
||||
import akka.contrib.pattern.DistributedPubSubMediator.Internal.Status
|
||||
import akka.contrib.pattern.DistributedPubSubMediator.Internal.Delta
|
||||
|
||||
object DistributedPubSubMediatorSpec extends MultiNodeConfig {
|
||||
val first = role("first")
|
||||
|
|
@ -29,6 +31,8 @@ object DistributedPubSubMediatorSpec extends MultiNodeConfig {
|
|||
akka.actor.provider = "akka.cluster.ClusterActorRefProvider"
|
||||
akka.remote.log-remote-lifecycle-events = off
|
||||
akka.cluster.auto-down-unreachable-after = 0s
|
||||
akka.contrib.cluster.pub-sub.max-delta-elements = 500
|
||||
#akka.remote.log-frame-size-exceeding = 1024b
|
||||
"""))
|
||||
|
||||
object TestChatUser {
|
||||
|
|
@ -341,5 +345,47 @@ class DistributedPubSubMediatorSpec extends MultiNodeSpec(DistributedPubSubMedia
|
|||
|
||||
enterBarrier("after-11")
|
||||
}
|
||||
|
||||
"transfer delta correctly" in {
|
||||
val firstAddress = node(first).address
|
||||
val secondAddress = node(second).address
|
||||
val thirdAddress = node(third).address
|
||||
|
||||
runOn(first) {
|
||||
mediator ! Status(versions = Map.empty)
|
||||
val deltaBuckets = expectMsgType[Delta].buckets
|
||||
deltaBuckets.size must be (3)
|
||||
deltaBuckets.find(_.owner == firstAddress).get.content.size must be(7)
|
||||
deltaBuckets.find(_.owner == secondAddress).get.content.size must be(6)
|
||||
deltaBuckets.find(_.owner == thirdAddress).get.content.size must be(2)
|
||||
}
|
||||
enterBarrier("verified-initial-delta")
|
||||
|
||||
// this test is configured with max-delta-elements = 500
|
||||
val many = 1010
|
||||
runOn(first) {
|
||||
for (i <- 0 until many)
|
||||
mediator ! Put(createChatUser("u" + (1000 + i)))
|
||||
|
||||
mediator ! Status(versions = Map.empty)
|
||||
val deltaBuckets1 = expectMsgType[Delta].buckets
|
||||
deltaBuckets1.map(_.content.size).sum must be (500)
|
||||
|
||||
mediator ! Status(versions = deltaBuckets1.map(b => b.owner -> b.version).toMap)
|
||||
val deltaBuckets2 = expectMsgType[Delta].buckets
|
||||
deltaBuckets1.map(_.content.size).sum must be (500)
|
||||
|
||||
mediator ! Status(versions = deltaBuckets2.map(b => b.owner -> b.version).toMap)
|
||||
val deltaBuckets3 = expectMsgType[Delta].buckets
|
||||
|
||||
deltaBuckets3.map(_.content.size).sum must be (7 + 6 + 2 + many - 500 - 500)
|
||||
}
|
||||
|
||||
|
||||
enterBarrier("verified-delta-with-many")
|
||||
awaitCount(13 + many)
|
||||
|
||||
enterBarrier("after-12")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue