Beispiel #1
0
        public void Execute()
        {
            var startDay = DateTime.Today;
            var r        = new Random();
            var value    = r.Next(-5, 24);

            foreach (var i in Enumerable.Range(0, 10))
            {
                var day = startDay;
                Task.Run(() =>
                {
                    var temperatureManager = new TemperatureDeviceEventsGenerator();
                    temperatureManager.BuildDayStats(day);
                    var context = new ELKContext("temperature");

                    var dayValues = value + new Random().Next(-5, 5);

                    foreach (var _ in Enumerable.Range(0, 24))
                    {
                        var @event = temperatureManager.Generate(dayValues);

                        context.WriteDynamicAsync(@event);
                    }

                    temperatureManager.Reset();
                    context.Dispose();
                });
                startDay = startDay.AddDays(1);
            }
        }
        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();
        }
        public async Task <int> Handle(AddSubscriber request, CancellationToken cancellationToken)
        {
            var sub = new Subscriber
            {
                IP   = request.IP,
                Name = request.Name,
                Type = request.Type
            };

            using var db       = new CassandraContext();
            using var logStore = new ELKContext();

            // db.CreateSubscription(sub);
            await logStore.LogAsync(new Log
            {
                Id          = Guid.NewGuid(),
                Severity    = "Info",
                Message     = $"Sub has been created: {sub.Name} IP: {sub.IP}",
                Time        = DateTime.UtcNow,
                ServiceName = "SubscribeAPI"
            });

            return(0);
        }