private void MetricsOutput(IWorkContext context, MetricSampler metrics)
        {
            IReadOnlyList <MetricSample> samples = metrics.GetMetrics(true);

            if (samples.Count == 0)
            {
                context.Telemetry.Info(context, "Send - empty metrics");
                return;
            }

            double   total = samples.Sum(x => x.Count);
            TimeSpan span  = TimeSpan.FromSeconds(samples.Sum(x => x.Span.TotalSeconds));

            context.Telemetry.Info(context, $"Send: Total: {total}, Span: {span}, TPS:{total / span.TotalSeconds}");
        }
        private async Task SendMessages(IWorkContext context, MetricSampler metrics)
        {
            for (var i = 0; (_option.Count == 0 || i < _option.Count) && !context.CancellationToken.IsCancellationRequested; i++)
            {
                try
                {
                    var message = $"Message {i} ***";
                    await _sendEvent.Value.SendAsync(context, new EventData(Encoding.UTF8.GetBytes(message)));

                    metrics.Add(1);
                    _messageCount++;
                }
                catch (Exception exception)
                {
                    context.Telemetry.Error(context, $"{DateTime.Now} > Exception: {exception.Message}");
                }
            }
        }
        private async Task SendMessage(IWorkContext context, MetricSampler metrics)
        {
            for (var i = 0; (_option.Count == 0 || i < _option.Count) && !context.CancellationToken.IsCancellationRequested; i++)
            {
                try
                {
                    var message = $"Message {i} ***";
                    await _client.Send(context, message);

                    metrics.Add(1);
                    _messageCount++;
                }
                catch (Exception exception)
                {
                    context.Telemetry.Error(context, $"{DateTime.Now} > Exception: {exception.Message}");
                }
            }
        }
        private Task SendMessagesToEventHub(IWorkContext context)
        {
            var metrics = new MetricSampler(TimeSpan.FromSeconds(1))
                          .Start();

            using var timer = new Timer(x => MetricsOutput(context, metrics), metrics, TimeSpan.FromSeconds(5), TimeSpan.FromSeconds(5));

            _messageCount = 0;

            var tasks = new List <Task>();

            Enumerable.Range(0, _option.TaskCount)
            .ForEach(x => tasks.Add(SendMessages(context, metrics)));

            Task.WaitAll(tasks.ToArray());
            Console.WriteLine($"Sent {_messageCount} messages");

            return(Task.FromResult(0));
        }
        public void GivenSampler_WhenTestingFast_ShouldHaveSingleSummaryRecord()
        {
            const int count   = 99;
            var       metrics = new MetricSampler(TimeSpan.FromSeconds(1));

            metrics.Start();

            Enumerable.Range(0, count)
            .ForEach(x => metrics.Add(x));

            metrics.Stop();

            IReadOnlyList <MetricSample> metricsList = metrics.GetMetrics();

            metricsList.Count().Should().Be(1);

            int   n            = count - 1;
            float sumOfNumbers = (n * (n + 1)) / 2;

            metricsList.Max(x => x.Value).Should().Be(sumOfNumbers);
            metricsList.Max(x => x.Count).Should().Be(count);
        }
Exemple #6
0
 public EventProcessFactory(IWorkContext context, MetricSampler sampler)
 {
     _context = context;
     _sampler = sampler;
 }
Exemple #7
0
 public EventProcessor(IWorkContext context, MetricSampler sampler)
 {
     _context = context.With(_tag);
     _sampler = sampler;
 }