public void CanScaleBetween(string fromString, string toString) { var from = RedisClusterSize.TryParse(fromString).ThrowIfFailure(); var to = RedisClusterSize.TryParse(toString).ThrowIfFailure(); Assert.True(RedisScalingUtilities.CanScale(from, to)); }
public void CantScaleIfEitherInstanceOrPlanChanges() { var cantScaleRelation = from source in RedisClusterSize.Instances from target in RedisClusterSize.Instances where !source.Equals(target) where !RedisScalingUtilities.CanScale(source, target) select(source, target); foreach (var(source, target) in cantScaleRelation) { (!source.Tier.Equals(target.Tier) || source.Shards != target.Shards).Should().BeTrue($"{source} -> {target}"); } }
public void CanChangeShardsWithinSameTier() { foreach (var group in RedisClusterSize.Instances.GroupBy(size => size.Tier)) { var instances = group.ToList(); foreach (var inst1 in instances) { foreach (var inst2 in instances) { Assert.True(RedisScalingUtilities.CanScale(inst1, inst2)); } } } }
public void CanScaleAcrossPremiumPlansWhenShardsRemainEqual() { foreach (var group in RedisClusterSize .Instances .Where(size => size.Tier.Plan == RedisPlan.Premium) .GroupBy(size => size.Shards)) { var instances = group.ToList(); foreach (var inst1 in instances) { foreach (var inst2 in instances) { Assert.True(RedisScalingUtilities.CanScale(inst1, inst2)); } } } }