Migrate ZPagesExporter to BatchExportActivityProcessor (#1108)
* Changing Zpages processor * updating changelog * updating to ZPagesProcessor * updating after merge * adding internal reset method
This commit is contained in:
parent
595c3bd0c3
commit
83adf75f01
|
|
@ -32,6 +32,7 @@ namespace Examples.Console
|
|||
/// dotnet run -p Examples.Console.csproj jaeger -h localhost -p 6831
|
||||
/// dotnet run -p Examples.Console.csproj prometheus -i 15 -p 9184 -d 2
|
||||
/// dotnet run -p Examples.Console.csproj otlp -e "localhost:55680"
|
||||
/// dotnet run -p Examples.Console.csproj zpages
|
||||
///
|
||||
/// The above must be run from the project root folder
|
||||
/// (eg: C:\repos\opentelemetry-dotnet\src\examples\Console\).
|
||||
|
|
|
|||
|
|
@ -28,7 +28,6 @@ namespace Examples.Console
|
|||
{
|
||||
var zpagesOptions = new ZPagesExporterOptions() { Url = "http://localhost:7284/rpcz/", RetentionTime = 3600000 };
|
||||
var zpagesExporter = new ZPagesExporter(zpagesOptions);
|
||||
var zpagesProcessor = new ZPagesProcessor(zpagesExporter);
|
||||
var httpServer = new ZPagesExporterStatsHttpServer(zpagesExporter);
|
||||
|
||||
// Start the server
|
||||
|
|
@ -36,8 +35,11 @@ namespace Examples.Console
|
|||
|
||||
using var openTelemetry = Sdk.CreateTracerProviderBuilder()
|
||||
.AddSource("zpages-test")
|
||||
.AddProcessor(zpagesProcessor)
|
||||
.AddZPagesExporter()
|
||||
.AddZPagesExporter(o =>
|
||||
{
|
||||
o.Url = zpagesOptions.Url;
|
||||
o.RetentionTime = zpagesOptions.RetentionTime;
|
||||
})
|
||||
.Build();
|
||||
|
||||
ActivitySource activitySource = new ActivitySource("zpages-test");
|
||||
|
|
|
|||
|
|
@ -2,7 +2,10 @@
|
|||
|
||||
## Unreleased
|
||||
|
||||
Renamed extension method from `UseZPagesExporter` to `AddZPagesExporter`.
|
||||
* Renamed extension method from `UseZPagesExporter` to `AddZPagesExporter`
|
||||
([#1066](https://github.com/open-telemetry/opentelemetry-dotnet/pull/1066))
|
||||
* Changed `ZPagesExporter` to use `ZPagesProcessor` by default
|
||||
([#1108](https://github.com/open-telemetry/opentelemetry-dotnet/pull/1108))
|
||||
|
||||
## 0.4.0-beta.2
|
||||
|
||||
|
|
|
|||
|
|
@ -122,5 +122,17 @@ namespace OpenTelemetry.Exporter.ZPages.Implementation
|
|||
// Clear the last hour's activity information list
|
||||
CurrentHourList.Clear();
|
||||
}
|
||||
|
||||
internal static void Reset()
|
||||
{
|
||||
TotalCount.Clear();
|
||||
TotalLatency.Clear();
|
||||
CurrentHourList.Clear();
|
||||
CurrentMinuteList.Clear();
|
||||
ZQueue.Clear();
|
||||
ProcessingList.Clear();
|
||||
TotalEndedCount.Clear();
|
||||
TotalErrorCount.Clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,10 +14,7 @@
|
|||
// limitations under the License.
|
||||
// </copyright>
|
||||
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Timers;
|
||||
using OpenTelemetry.Exporter.ZPages.Implementation;
|
||||
using OpenTelemetry.Trace;
|
||||
|
|
@ -28,7 +25,7 @@ namespace OpenTelemetry.Exporter.ZPages
|
|||
/// <summary>
|
||||
/// Implements ZPages exporter.
|
||||
/// </summary>
|
||||
public class ZPagesExporter : ActivityExporter
|
||||
public class ZPagesExporter : ActivityExporterSync
|
||||
{
|
||||
internal readonly ZPagesExporterOptions Options;
|
||||
private readonly Timer minuteTimer;
|
||||
|
|
@ -56,16 +53,10 @@ namespace OpenTelemetry.Exporter.ZPages
|
|||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public override Task<ExportResult> ExportAsync(IEnumerable<Activity> batch, CancellationToken cancellationToken)
|
||||
public override ExportResultSync Export(in Batch<Activity> batch)
|
||||
{
|
||||
// var spanDatas = batch as SpanData[] ?? batch.ToArray();
|
||||
return Task.FromResult(ExportResult.Success);
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public override Task ShutdownAsync(CancellationToken cancellationToken)
|
||||
{
|
||||
return Task.FromResult(ExportResult.Success);
|
||||
return ExportResultSync.Success;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ namespace OpenTelemetry.Trace
|
|||
var zpagesExporter = new ZPagesExporter(exporterOptions);
|
||||
|
||||
// TODO: Pick Simple vs Batching based on ZipkinExporterOptions
|
||||
return builder.AddProcessor(new SimpleActivityProcessor(zpagesExporter));
|
||||
return builder.AddProcessor(new ZPagesProcessor(zpagesExporter));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,7 +16,6 @@
|
|||
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.Threading;
|
||||
using OpenTelemetry.Exporter.ZPages.Implementation;
|
||||
#if NET452
|
||||
using OpenTelemetry.Internal;
|
||||
|
|
@ -68,10 +67,6 @@ namespace OpenTelemetry.Exporter.ZPages
|
|||
{
|
||||
try
|
||||
{
|
||||
// do not await, just start export
|
||||
// it can still throw in synchronous part
|
||||
_ = this.exporter.ExportAsync(new[] { activity }, CancellationToken.None);
|
||||
|
||||
// If the span name is not in the current minute list, add it to the span list.
|
||||
if (!ZPagesActivityTracker.CurrentMinuteList.ContainsKey(activity.DisplayName))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -34,6 +34,8 @@ namespace OpenTelemetry.Exporter.ZPages.Tests
|
|||
Assert.NotEmpty(ZPagesActivityTracker.CurrentMinuteList);
|
||||
ZPagesActivityTracker.PurgeCurrentMinuteData(null, null);
|
||||
Assert.Empty(ZPagesActivityTracker.CurrentMinuteList);
|
||||
|
||||
ZPagesActivityTracker.ProcessingList.Clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,7 +19,6 @@ using System.Collections.Generic;
|
|||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Net.Http;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using OpenTelemetry.Exporter.ZPages.Implementation;
|
||||
using OpenTelemetry.Resources;
|
||||
|
|
@ -54,19 +53,6 @@ namespace OpenTelemetry.Exporter.ZPages.Tests
|
|||
Assert.Throws<ArgumentNullException>(() => builder.AddZPagesExporter());
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task CheckingIntegration()
|
||||
{
|
||||
var batchActivity = new List<Activity> { CreateTestActivity() };
|
||||
|
||||
ZPagesExporter exporter = new ZPagesExporter(new ZPagesExporterOptions());
|
||||
|
||||
var exportResult = await exporter.ExportAsync(batchActivity, CancellationToken.None).ConfigureAwait(false);
|
||||
Assert.Equal(ExportResult.Success, exportResult);
|
||||
|
||||
await exporter.ShutdownAsync(CancellationToken.None).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void CheckingCustomActivityProcessor()
|
||||
{
|
||||
|
|
@ -89,18 +75,20 @@ namespace OpenTelemetry.Exporter.ZPages.Tests
|
|||
endCalled = true;
|
||||
};
|
||||
|
||||
var openTelemetrySdk = Sdk.CreateTracerProviderBuilder()
|
||||
using var openTelemetrySdk = Sdk.CreateTracerProviderBuilder()
|
||||
.AddSource(ActivitySourceName)
|
||||
.AddProcessor(testActivityProcessor)
|
||||
.AddZPagesExporter()
|
||||
.Build();
|
||||
|
||||
var source = new ActivitySource(ActivitySourceName);
|
||||
var activity = source.StartActivity("Test Zipkin Activity");
|
||||
using var source = new ActivitySource(ActivitySourceName);
|
||||
using var activity = source.StartActivity("Test Zipkin Activity");
|
||||
activity?.Stop();
|
||||
|
||||
Assert.True(startCalled);
|
||||
Assert.True(endCalled);
|
||||
|
||||
ZPagesActivityTracker.Reset();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
|
@ -129,11 +117,9 @@ namespace OpenTelemetry.Exporter.ZPages.Tests
|
|||
};
|
||||
ZPagesExporter exporter = new ZPagesExporter(options);
|
||||
var zpagesProcessor = new ZPagesProcessor(exporter);
|
||||
var zpagesServer = new ZPagesExporterStatsHttpServer(exporter);
|
||||
zpagesServer.Start();
|
||||
|
||||
var source = new ActivitySource(ActivitySourceName);
|
||||
var activity0 = source.StartActivity("Test Zipkin Activity");
|
||||
var activity0 = source.StartActivity("Test Zipkin Activity 1");
|
||||
zpagesProcessor.OnStart(activity0);
|
||||
|
||||
// checking size of dictionaries from ZPagesActivityTracker
|
||||
|
|
@ -143,7 +129,7 @@ namespace OpenTelemetry.Exporter.ZPages.Tests
|
|||
Assert.Single(ZPagesActivityTracker.TotalErrorCount);
|
||||
Assert.Single(ZPagesActivityTracker.TotalLatency);
|
||||
|
||||
var activity1 = source.StartActivity("Test Zipkin Activity");
|
||||
var activity1 = source.StartActivity("Test Zipkin Activity 1");
|
||||
zpagesProcessor.OnStart(activity1);
|
||||
|
||||
// checking size of dictionaries from ZPagesActivityTracker
|
||||
|
|
@ -175,11 +161,14 @@ namespace OpenTelemetry.Exporter.ZPages.Tests
|
|||
Assert.Equal(0, ZPagesActivityTracker.ProcessingList.Last().Value);
|
||||
Assert.Empty(ZPagesActivityTracker.ZQueue);
|
||||
|
||||
var zpagesServer = new ZPagesExporterStatsHttpServer(exporter);
|
||||
zpagesServer.Start();
|
||||
|
||||
using var httpResponseMessage = await HttpClient.GetAsync("http://localhost:7284/rpcz/");
|
||||
Assert.True(httpResponseMessage.IsSuccessStatusCode);
|
||||
|
||||
var content = await httpResponseMessage.Content.ReadAsStringAsync();
|
||||
Assert.Contains($"<td>Test Zipkin Activity</td>", content);
|
||||
Assert.Contains($"<td>Test Zipkin Activity 1</td>", content);
|
||||
Assert.Contains($"<td>Test Zipkin Activity 2</td>", content);
|
||||
|
||||
zpagesProcessor.Dispose();
|
||||
|
|
|
|||
Loading…
Reference in New Issue