示例#1
0
        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();
        }