public async Task JaegerUdpBatcher_IntegrationTest() { var validJaegerThriftPayload = Convert.FromBase64String(TestPayloadBase64); var memoryTransport = new InMemoryTransport(); using var jaegerUdpBatcher = new JaegerUdpBatcher( new JaegerExporterOptions { MaxFlushInterval = TimeSpan.FromHours(1) }, memoryTransport); jaegerUdpBatcher.Process = TestProcess; await jaegerUdpBatcher.AppendAsync(CreateTestPayloadJaegerSpan(), CancellationToken.None).ConfigureAwait(false); await jaegerUdpBatcher.FlushAsync(CancellationToken.None).ConfigureAwait(false); Assert.Equal(Convert.ToBase64String(validJaegerThriftPayload), Convert.ToBase64String(memoryTransport.ToArray())); memoryTransport.Reset(); await jaegerUdpBatcher.AppendAsync(CreateTestPayloadJaegerSpan(), CancellationToken.None).ConfigureAwait(false); await jaegerUdpBatcher.FlushAsync(CancellationToken.None).ConfigureAwait(false); // SeqNo is the second byte. validJaegerThriftPayload[2]++; Assert.Equal(Convert.ToBase64String(validJaegerThriftPayload), Convert.ToBase64String(memoryTransport.ToArray())); }
public async Task JaegerUdpBatcherTests_BuildBatchesToTransmit_MultipleBatches() { // Arrange var options = new JaegerExporterOptions { ServiceName = "TestService", MaxFlushInterval = TimeSpan.FromHours(1) }; var jaegerUdpBatcher = new JaegerUdpBatcher(options); // Act await jaegerUdpBatcher.AppendAsync(JaegerSpanConverterTest.CreateTestSpan().ToJaegerSpan(), CancellationToken.None).ConfigureAwait(false); await jaegerUdpBatcher.AppendAsync( JaegerSpanConverterTest.CreateTestSpan( additionalAttributes : new Dictionary <string, object> { ["peer.service"] = "MySQL", }) .ToJaegerSpan(), CancellationToken.None).ConfigureAwait(false); await jaegerUdpBatcher.AppendAsync(JaegerSpanConverterTest.CreateTestSpan().ToJaegerSpan(), CancellationToken.None).ConfigureAwait(false); var batches = jaegerUdpBatcher.CurrentBatches.Values; // Assert Assert.Equal(2, batches.Count()); var PrimaryBatch = batches.Where(b => b.Process.ServiceName == "TestService"); Assert.Single(PrimaryBatch); Assert.Equal(2, PrimaryBatch.First().Spans.Count()); var MySQLBatch = batches.Where(b => b.Process.ServiceName == "MySQL"); Assert.Single(MySQLBatch); Assert.Single(MySQLBatch.First().Spans); }
public async Task JaegerUdpBatcherTests_BuildBatchesToTransmit_DefaultBatch() { // Arrange var options = new JaegerExporterOptions { ServiceName = "TestService", MaxFlushInterval = TimeSpan.FromHours(1) }; var jaegerUdpBatcher = new JaegerUdpBatcher(options); // Act await jaegerUdpBatcher.AppendAsync(CreateTestJaegerSpan(), CancellationToken.None).ConfigureAwait(false); await jaegerUdpBatcher.AppendAsync(CreateTestJaegerSpan(), CancellationToken.None).ConfigureAwait(false); await jaegerUdpBatcher.AppendAsync(CreateTestJaegerSpan(), CancellationToken.None).ConfigureAwait(false); var batches = jaegerUdpBatcher.CurrentBatches.Values; // Assert Assert.Single(batches); Assert.Equal("TestService", batches.First().Process.ServiceName); Assert.Equal(3, batches.First().SpanMessages.Count()); }
public async Task JaegerUdpBatcherTests_BuildBatchesToTransmit_FlushedBatch() { // Arrange var options = new JaegerExporterOptions { ServiceName = "TestService", MaxFlushInterval = TimeSpan.FromHours(1), MaxPacketSize = 750 }; var jaegerUdpBatcher = new JaegerUdpBatcher(options); // Act await jaegerUdpBatcher.AppendAsync(JaegerSpanConverterTest.CreateTestSpan().ToJaegerSpan(), CancellationToken.None).ConfigureAwait(false); await jaegerUdpBatcher.AppendAsync(JaegerSpanConverterTest.CreateTestSpan().ToJaegerSpan(), CancellationToken.None).ConfigureAwait(false); var flushCount = await jaegerUdpBatcher.AppendAsync(JaegerSpanConverterTest.CreateTestSpan().ToJaegerSpan(), CancellationToken.None).ConfigureAwait(false); var batches = jaegerUdpBatcher.CurrentBatches.Values; // Assert Assert.Equal(2, flushCount); Assert.Single(batches); Assert.Equal("TestService", batches.First().Process.ServiceName); Assert.Single(batches.First().Spans); }
public async Task JaegerExporter_Batching() { using var jaegerUdpBatcher = new JaegerUdpBatcher( new JaegerExporterOptions(), new BlackHoleTransport()); jaegerUdpBatcher.Process = new OpenTelemetry.Exporter.Jaeger.Process("TestService"); for (int i = 0; i < this.NumberOfBatches; i++) { for (int c = 0; c < this.NumberOfSpans; c++) { await jaegerUdpBatcher.AppendAsync(this.testActivity, CancellationToken.None).ConfigureAwait(false); } await jaegerUdpBatcher.FlushAsync(CancellationToken.None).ConfigureAwait(false); } }