|
Akka/Scala example source code file (LeastShardAllocationStrategySpec.scala)
The LeastShardAllocationStrategySpec.scala Akka example source code
/**
* Copyright (C) 2009-2014 Typesafe Inc. <http://www.typesafe.com>
*/
package akka.contrib.pattern
import akka.testkit.AkkaSpec
import akka.actor.Props
class LeastShardAllocationStrategySpec extends AkkaSpec {
import ShardCoordinator._
val regionA = system.actorOf(Props.empty, "regionA")
val regionB = system.actorOf(Props.empty, "regionB")
val regionC = system.actorOf(Props.empty, "regionC")
val allocationStrategy = new LeastShardAllocationStrategy(rebalanceThreshold = 3, maxSimultaneousRebalance = 2)
"LeastShardAllocationStrategy" must {
"allocate to region with least number of shards" in {
val allocations = Map(regionA -> Vector("shard1"), regionB -> Vector("shard2"), regionC -> Vector.empty)
allocationStrategy.allocateShard(regionA, "shard3", allocations) should be(regionC)
}
"rebalance from region with most number of shards" in {
val allocations = Map(regionA -> Vector("shard1"), regionB -> Vector("shard2", "shard3"),
regionC -> Vector.empty)
// so far regionB has 2 shards and regionC has 0 shards, but the diff is less than rebalanceThreshold
allocationStrategy.rebalance(allocations, Set.empty) should be(Set.empty)
val allocations2 = allocations.updated(regionB, Vector("shard2", "shard3", "shard4"))
allocationStrategy.rebalance(allocations2, Set.empty) should be(Set("shard2"))
allocationStrategy.rebalance(allocations2, Set("shard4")) should be(Set.empty)
val allocations3 = allocations2.updated(regionA, Vector("shard1", "shard5", "shard6"))
allocationStrategy.rebalance(allocations3, Set("shard1")) should be(Set("shard2"))
}
"must limit number of simultanious rebalance" in {
val allocations = Map(regionA -> Vector("shard1"),
regionB -> Vector("shard2", "shard3", "shard4", "shard5", "shard6"), regionC -> Vector.empty)
allocationStrategy.rebalance(allocations, Set("shard2")) should be(Set("shard3"))
allocationStrategy.rebalance(allocations, Set("shard2", "shard3")) should be(Set.empty)
}
}
}
Other Akka source code examplesHere is a short list of links related to this Akka LeastShardAllocationStrategySpec.scala source code file: |
| ... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.