protected NodeStats RunScenario(string name, Func <HttpRequest> request, int parallelCopies = 100, TimeSpan?period = null) { var step = HttpStep.Create("init", ctx => Task.FromResult(request())); var scenario = ScenarioBuilder.CreateScenario(name, step) .WithWarmUpDuration(TimeSpan.FromSeconds(3)) .WithLoadSimulations(LoadSimulation.NewKeepConstant(parallelCopies, period ?? TimeSpan.FromSeconds(10))); var stats = NBomberRunner.RegisterScenarios(scenario).Run(); var jsonStats = JsonSerializer.Serialize(stats); Output.WriteLine(jsonStats); return(stats); }
static void Main(string[] args) { var step = Step.Create("Send temperature events", async context => { var startDay = DateTime.Today; var r = new Random(); var value = r.Next(-5, 24); var day = startDay; var temperatureManager = new TemperatureDeviceEventsGenerator(); temperatureManager.BuildDayStats(day); var ctx = new ELKContext("temperature"); var dayValues = value + new Random().Next(-5, 5); var data = Enumerable.Range(0, 24) .Select(x => temperatureManager.Generate(dayValues)); await Task.WhenAll( data.Select(x => ctx.WriteDynamicAsync(x)) ); temperatureManager.Reset(); // ctx.Dispose(); //// you can do any logic here: go to http, websocket etc //await Task.Delay(TimeSpan.FromSeconds(0.1)); return(Response.Ok()); }, 5); // after creating a step you should add it to Scenario. var scenario = ScenarioBuilder .CreateScenario("Testing Temperature Source", new[] { step }) .WithLoadSimulations(new [] { LoadSimulation.NewKeepConcurrentScenarios(50, TimeSpan.FromSeconds(60)) }); NBomberRunner.RegisterScenarios(new[] { scenario }) .RunInConsole(); }