public Task PrefersAddingShardsWhenMemoryGrowsAsync(string initialClusterSize, IEnumerable <string> expectedPath, string usedMemoryAcrossAllShards) { return(RunTestAsync(async(operationContext, redisAutoscalingAgent) => { redisAutoscalingAgent.UsedMemoryBytes.Add(usedMemoryAcrossAllShards.ToSize()); redisAutoscalingAgent.OperationsPerSecond.Add(10); var redisInstance = new MockRedisInstance(RedisClusterSize.Parse(initialClusterSize)); var modelOutput = await redisAutoscalingAgent .EstimateBestClusterSizeAsync(operationContext, redisInstance) .ThrowIfFailureAsync(); modelOutput .ScalePath .Should() .BeEquivalentTo(expectedPath.Select(size => RedisClusterSize.Parse(size))); })); }
public Task DisallowsLowCostDownscalesAsync() { return(RunTestAsync(async(operationContext, redisAutoscalingAgent) => { var redisInstance = new MockRedisInstance(RedisClusterSize.Parse("P2/1")); redisAutoscalingAgent.UsedMemoryBytes.Add("7.4 GB".ToSize()); redisAutoscalingAgent.OperationsPerSecond.Add(10000); var modelOutput = await redisAutoscalingAgent .EstimateBestClusterSizeAsync(operationContext, redisInstance) .ThrowIfFailureAsync(); modelOutput .ScalePath .Should() .BeEmpty(); })); }