Skip to content

Commit e5a7095

Browse files
[repo] Fix tests reliant on bugged sampling behavior (open-telemetry#6097)
Co-authored-by: Rajkumar Rangaraj <[email protected]>
1 parent cd8cb41 commit e5a7095

File tree

5 files changed

+54
-29
lines changed

5 files changed

+54
-29
lines changed

test/OpenTelemetry.Exporter.OpenTelemetryProtocol.Tests/Implementation/ExportClient/OtlpHttpTraceExportClientTests.cs

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,22 +15,32 @@
1515

1616
namespace OpenTelemetry.Exporter.OpenTelemetryProtocol.Tests;
1717

18-
public class OtlpHttpTraceExportClientTests
18+
public sealed class OtlpHttpTraceExportClientTests : IDisposable
1919
{
2020
private static readonly SdkLimitOptions DefaultSdkLimitOptions = new();
2121

22+
private readonly ActivityListener activityListener;
23+
2224
static OtlpHttpTraceExportClientTests()
2325
{
2426
Activity.DefaultIdFormat = ActivityIdFormat.W3C;
2527
Activity.ForceDefaultIdFormat = true;
28+
}
2629

27-
var listener = new ActivityListener
30+
public OtlpHttpTraceExportClientTests()
31+
{
32+
this.activityListener = new ActivityListener
2833
{
2934
ShouldListenTo = _ => true,
30-
Sample = (ref ActivityCreationOptions<ActivityContext> options) => ActivitySamplingResult.AllData,
35+
Sample = (ref ActivityCreationOptions<ActivityContext> options) => ActivitySamplingResult.AllDataAndRecorded,
3136
};
3237

33-
ActivitySource.AddActivityListener(listener);
38+
ActivitySource.AddActivityListener(this.activityListener);
39+
}
40+
41+
public void Dispose()
42+
{
43+
this.activityListener.Dispose();
3444
}
3545

3646
[Fact]

test/OpenTelemetry.Exporter.OpenTelemetryProtocol.Tests/Implementation/Serializer/OtlpArrayTagWriterTests.cs

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,27 +11,27 @@
1111

1212
namespace OpenTelemetry.Exporter.OpenTelemetryProtocol.Tests.Implementation.Serializer;
1313

14-
public class OtlpArrayTagWriterTests : IDisposable
14+
public sealed class OtlpArrayTagWriterTests : IDisposable
1515
{
1616
private readonly ProtobufOtlpTagWriter.OtlpArrayTagWriter arrayTagWriter;
17+
private readonly ActivityListener activityListener;
1718

1819
static OtlpArrayTagWriterTests()
1920
{
2021
Activity.DefaultIdFormat = ActivityIdFormat.W3C;
2122
Activity.ForceDefaultIdFormat = true;
22-
23-
var listener = new ActivityListener
24-
{
25-
ShouldListenTo = _ => true,
26-
Sample = (ref ActivityCreationOptions<ActivityContext> options) => ActivitySamplingResult.AllData,
27-
};
28-
29-
ActivitySource.AddActivityListener(listener);
3023
}
3124

3225
public OtlpArrayTagWriterTests()
3326
{
3427
this.arrayTagWriter = new ProtobufOtlpTagWriter.OtlpArrayTagWriter();
28+
this.activityListener = new ActivityListener
29+
{
30+
ShouldListenTo = _ => true,
31+
Sample = (ref ActivityCreationOptions<ActivityContext> options) => ActivitySamplingResult.AllDataAndRecorded,
32+
};
33+
34+
ActivitySource.AddActivityListener(this.activityListener);
3535
}
3636

3737
[Fact]
@@ -265,6 +265,7 @@ public void Dispose()
265265
{
266266
// Clean up the thread buffer after each test
267267
ProtobufOtlpTagWriter.OtlpArrayTagWriter.ThreadBuffer = null;
268+
this.activityListener.Dispose();
268269
}
269270

270271
private static OtlpTrace.Span? ToOtlpSpan(SdkLimitOptions sdkOptions, Activity activity)

test/OpenTelemetry.Exporter.OpenTelemetryProtocol.Tests/OtlpTraceExporterTests.cs

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,24 +20,35 @@
2020
namespace OpenTelemetry.Exporter.OpenTelemetryProtocol.Tests;
2121

2222
[Collection("xUnitCollectionPreventingTestsThatDependOnSdkConfigurationFromRunningInParallel")]
23-
public class OtlpTraceExporterTests
23+
public sealed class OtlpTraceExporterTests : IDisposable
2424
{
2525
private static readonly SdkLimitOptions DefaultSdkLimitOptions = new();
26-
2726
private static readonly ExperimentalOptions DefaultExperimentalOptions = new();
2827

28+
private readonly ActivityListener activityListener;
29+
2930
static OtlpTraceExporterTests()
3031
{
3132
Activity.DefaultIdFormat = ActivityIdFormat.W3C;
3233
Activity.ForceDefaultIdFormat = true;
34+
}
3335

34-
var listener = new ActivityListener
36+
public OtlpTraceExporterTests()
37+
{
38+
this.activityListener = new ActivityListener
3539
{
3640
ShouldListenTo = _ => true,
37-
Sample = (ref ActivityCreationOptions<ActivityContext> options) => ActivitySamplingResult.AllData,
41+
Sample = (ref ActivityCreationOptions<ActivityContext> options) => options.Parent.TraceFlags.HasFlag(ActivityTraceFlags.Recorded)
42+
? ActivitySamplingResult.AllDataAndRecorded
43+
: ActivitySamplingResult.AllData,
3844
};
3945

40-
ActivitySource.AddActivityListener(listener);
46+
ActivitySource.AddActivityListener(this.activityListener);
47+
}
48+
49+
public void Dispose()
50+
{
51+
this.activityListener.Dispose();
4152
}
4253

4354
[Fact]

test/OpenTelemetry.Exporter.Zipkin.Tests/ZipkinExporterTests.cs

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919

2020
namespace OpenTelemetry.Exporter.Zipkin.Tests;
2121

22-
public class ZipkinExporterTests : IDisposable
22+
public sealed class ZipkinExporterTests : IDisposable
2323
{
2424
private const string TraceId = "e8ea7e9ac72de94e91fabc613f9686b2";
2525
private static readonly ConcurrentDictionary<Guid, string> Responses = new();
@@ -32,14 +32,6 @@ static ZipkinExporterTests()
3232
{
3333
Activity.DefaultIdFormat = ActivityIdFormat.W3C;
3434
Activity.ForceDefaultIdFormat = true;
35-
36-
var listener = new ActivityListener
37-
{
38-
ShouldListenTo = _ => true,
39-
Sample = (ref ActivityCreationOptions<ActivityContext> options) => ActivitySamplingResult.AllData,
40-
};
41-
42-
ActivitySource.AddActivityListener(listener);
4335
}
4436

4537
public ZipkinExporterTests()
@@ -68,7 +60,6 @@ static void ProcessServerRequest(HttpListenerContext context)
6860
public void Dispose()
6961
{
7062
this.testServer.Dispose();
71-
GC.SuppressFinalize(this);
7263
}
7364

7465
[Fact]
@@ -455,6 +446,16 @@ internal static Activity CreateTestActivity(
455446
string? statusDescription = null,
456447
DateTime? dateTime = null)
457448
{
449+
using var activityListener = new ActivityListener
450+
{
451+
ShouldListenTo = _ => true,
452+
Sample = (ref ActivityCreationOptions<ActivityContext> options) => options.Parent.TraceFlags.HasFlag(ActivityTraceFlags.Recorded)
453+
? ActivitySamplingResult.AllDataAndRecorded
454+
: ActivitySamplingResult.AllData,
455+
};
456+
457+
ActivitySource.AddActivityListener(activityListener);
458+
458459
var startTimestamp = DateTime.UtcNow;
459460
var endTimestamp = startTimestamp.AddSeconds(60);
460461
var eventTimestamp = DateTime.UtcNow;
@@ -532,6 +533,8 @@ internal static Activity CreateTestActivity(
532533
links,
533534
startTime: startTimestamp)!;
534535

536+
Assert.NotNull(activity);
537+
535538
if (addEvents)
536539
{
537540
foreach (var evnt in events)

test/OpenTelemetry.Shims.OpenTracing.Tests/ListenAndSampleAllActivitySources.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ public Fixture()
2121
this.listener = new ActivityListener
2222
{
2323
ShouldListenTo = _ => true,
24-
Sample = (ref ActivityCreationOptions<ActivityContext> options) => ActivitySamplingResult.AllData,
24+
Sample = (ref ActivityCreationOptions<ActivityContext> options) => ActivitySamplingResult.AllDataAndRecorded,
2525
};
2626

2727
ActivitySource.AddActivityListener(this.listener);

0 commit comments

Comments
 (0)