private void TestRebalance( IShardAllocationStrategy allocationStrategy, int maxRegions, int maxShardsPerRegion, int expectedMaxSteps) { foreach (var i in Enumerable.Range(1, iterationsPerTest)) { iteration += 1; var numberOfRegions = rnd.Next(maxRegions) + 1; var memberArray = Enumerable.Range(1, numberOfRegions).Select(n => LeastShardAllocationStrategySpec.NewUpMember("127.0.0.1", port: n)).ToArray(); clusterMembers = ImmutableSortedSet.Create(memberArray);//.toIndexedSeq: _ *); var regions = Enumerable.Range(1, numberOfRegions).Select(n => LeastShardAllocationStrategySpec.NewFakeRegion($"{iteration}-R{n}", memberArray[n - 1])); //var regions = Enumerable.Range(1, numberOfRegions).Select(n => Sys.ActorOf(Props.Empty, $"{iteration}-R{n}")).ToImmutableList(); var countPerRegion = regions.ToImmutableDictionary(region => region, region => rnd.Next(maxShardsPerRegion)); var allocations = CreateAllocations(countPerRegion); TestRebalance(allocationStrategy, allocations, ImmutableList.Create(allocations), expectedMaxSteps); foreach (var region in regions) { Sys.Stop(region); } } }
internal static Member NewUpMember(string host, int port = 252525, AppVersion version = null) => LeastShardAllocationStrategySpec.NewUpMember(host, port, version);