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); }
public EventProcessFactory(IWorkContext context, MetricSampler sampler) { _context = context; _sampler = sampler; }
public EventProcessor(IWorkContext context, MetricSampler sampler) { _context = context.With(_tag); _sampler = sampler; }