public async Task SetLoad(LoadTestStepContext ctx) { var lambdaRequestCounts = JourneyCalcuations.JourneyCounts( _provisionedConcucrrency, ctx.RequestsPerSecond, ctx.Duration.TotalSeconds, 12); var publishRequests = new PublishRequest[lambdaRequestCounts.Count]; for (var i = 0; i < lambdaRequestCounts.Count; i++) { var count = lambdaRequestCounts[i]; publishRequests[i] = new PublishRequest { TopicArn = _controlPlaneTopicArn, Message = JsonConvert.SerializeObject(new LambdaRequest { RequestCount = count, Journeys = await ctx.StoryTeller(count), Duration = ctx.Duration }) }; } await ctx.PublishAsync(publishRequests, ctx.Duration, ctx.Cancel); }
public void less_than_min_journeys_execution_with_leftovers() { // 1 request per second for 70 seconds, 60 requests, over max 100 invocation, min requests of 12 per minute // should do 70 / 12 = 5 journeys with 12 requests and 1 request with 10 journeys var result = JourneyCalcuations.JourneyCounts(100, 1, 70, 12); result.Sum().ShouldBe(70); result.ShouldBe(new[] { 12, 12, 12, 12, 12, 10 }); }
public void less_than_min_journeys_execution() { // 1 request per second for 70 seconds, 70 requests, over max 100 invocation, min requests of 12 per minute // should do 60 / 12 = 5 journeys with 12 requests var result = JourneyCalcuations.JourneyCounts(100, 1, 60, 12); result.Sum().ShouldBe(60); result.ShouldBe(Enumerable.Repeat(12, 5)); }
public void rounding() { // 5 rx/s for 60s = 300 requests // 300 / 12 = 25 executions var result = JourneyCalcuations.JourneyCounts(600, 5, 60, 12); result.Sum().ShouldBe(300); result.Count().ShouldBe(25); }
public void double_provisioned_execution() { // we want double the number of 50 provisioned, thats 100 execution // 12 journeys pre execution, thats 1200 total journeys // over 60 seconds that's 20rps var result = JourneyCalcuations.JourneyCounts(50, 20, 60, 12); result.Sum().ShouldBe(1200); result.Count().ShouldBe(50); }