Skip to content

Commit d102343

Browse files
[Out-of-process-collection] Add tests for Tracing Implementation (open-telemetry#4345)
* New trace tests. * Remove static constructor from proto tests, Fix test interfence with metrics by introducing Allowed MeterNames, Fix other tracing test failures. * remove assert true.
1 parent 092b52f commit d102343

13 files changed

+2390
-14
lines changed

next-gen/test/OpenTelemetry.AutoInstrumentation.Sdk.Tests/OtlpMeasurementCollector.cs

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ internal sealed class OtlpMeasurementCollector : IDisposable
1717
{
1818
private readonly MeterListener _MeterListener;
1919
private readonly Resource _Resource;
20+
private readonly HashSet<string> _AllowedMeterNames = new();
2021
private readonly List<CollectedMeasurement> _Measurements = new();
2122
private readonly object _Lock = new();
2223
private TaskCompletionSource<CollectedMeasurement>? _SingleMeasurementTcs;
@@ -29,7 +30,11 @@ public OtlpMeasurementCollector(Resource resource)
2930
_MeterListener = new MeterListener();
3031
_MeterListener.InstrumentPublished = (instrument, listener) =>
3132
{
32-
listener.EnableMeasurementEvents(instrument);
33+
// Only enable measurements for explicitly allowed meters to avoid capturing runtime metrics
34+
if (_AllowedMeterNames.Contains(instrument.Meter.Name))
35+
{
36+
listener.EnableMeasurementEvents(instrument);
37+
}
3338
};
3439

3540
// Register callbacks for different measurement types
@@ -41,6 +46,14 @@ public OtlpMeasurementCollector(Resource resource)
4146
_MeterListener.Start();
4247
}
4348

49+
public void AllowMeter(string meterName)
50+
{
51+
lock (_Lock)
52+
{
53+
_AllowedMeterNames.Add(meterName);
54+
}
55+
}
56+
4457
public void Dispose()
4558
{
4659
_MeterListener?.Dispose();
@@ -146,7 +159,7 @@ internal async Task<CollectedMeasurement> WaitForMeasurementAsync(TimeSpan timeo
146159
{
147160
if (_Measurements.Count > 0)
148161
{
149-
return _Measurements.Last();
162+
return _Measurements[_Measurements.Count - 1];
150163
}
151164

152165
_SingleMeasurementTcs = new TaskCompletionSource<CollectedMeasurement>();

next-gen/test/OpenTelemetry.AutoInstrumentation.Sdk.Tests/ProtobufOtlpMetricExporterAsyncTests.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ public async Task ToOtlpResourceMetricsTest()
2828

2929
// Create the measurement collector
3030
using var collector = new OtlpMeasurementCollector(resource);
31+
collector.AllowMeter("ToOtlpResourceMetricsTest");
3132

3233
// Create meter and counter
3334
using var meter = new Meter(name: "ToOtlpResourceMetricsTest", version: "0.0.1", tags: meterTags);
@@ -74,6 +75,7 @@ public async Task ToOtlpResourceMetricsWithMultipleCountersTest()
7475
});
7576

7677
using var collector = new OtlpMeasurementCollector(resource);
78+
collector.AllowMeter("MultiCounterTest");
7779

7880
using var meter = new Meter(name: "MultiCounterTest", version: "1.0.0");
7981
var counter1 = meter.CreateCounter<int>("requests");
@@ -107,6 +109,7 @@ public async Task ToOtlpResourceMetricsWithDifferentTypesTest()
107109
});
108110

109111
using var collector = new OtlpMeasurementCollector(resource);
112+
collector.AllowMeter("MixedTypesTest");
110113

111114
using var meter = new Meter(name: "MixedTypesTest", version: "1.0.0");
112115
var intCounter = meter.CreateCounter<int>("int_counter");
@@ -146,6 +149,7 @@ public async Task ToOtlpResourceMetricsWithUpDownCounterTest()
146149
});
147150

148151
using var collector = new OtlpMeasurementCollector(resource);
152+
collector.AllowMeter("UpDownCounterTest");
149153

150154
using var meter = new Meter(name: "UpDownCounterTest", version: "1.0.0");
151155
var upDownCounter = meter.CreateUpDownCounter<int>("requests_active");
@@ -180,6 +184,7 @@ public async Task ToOtlpResourceMetricsWithHistogramTest()
180184
});
181185

182186
using var collector = new OtlpMeasurementCollector(resource);
187+
collector.AllowMeter("HistogramTest");
183188

184189
using var meter = new Meter(name: "HistogramTest", version: "1.0.0");
185190
var histogram = meter.CreateHistogram<double>("request_duration");
@@ -224,6 +229,7 @@ public async Task ToOtlpResourceMetricsWithLongUpDownCounterTest()
224229
});
225230

226231
using var collector = new OtlpMeasurementCollector(resource);
232+
collector.AllowMeter("LongUpDownCounterTest");
227233

228234
using var meter = new Meter(name: "LongUpDownCounterTest", version: "1.0.0");
229235
var upDownCounter = meter.CreateUpDownCounter<long>("memory_usage_bytes");
@@ -255,6 +261,7 @@ public async Task ToOtlpResourceMetricsWithIntHistogramTest()
255261
});
256262

257263
using var collector = new OtlpMeasurementCollector(resource);
264+
collector.AllowMeter("IntHistogramTest");
258265

259266
using var meter = new Meter(name: "IntHistogramTest", version: "1.0.0");
260267
var histogram = meter.CreateHistogram<int>("response_size_bytes");
@@ -303,6 +310,7 @@ public async Task ToOtlpResourceMetricsWithFloatGaugeTest()
303310
});
304311

305312
using var collector = new OtlpMeasurementCollector(resource);
313+
collector.AllowMeter("FloatGaugeTest");
306314

307315
using var meter = new Meter(name: "FloatGaugeTest", version: "1.0.0");
308316
var gauge = meter.CreateGauge<float>("cpu_usage_percent");
@@ -350,6 +358,7 @@ public async Task ToOtlpResourceMetricsWithMixedInstrumentTypesTest()
350358
});
351359

352360
using var collector = new OtlpMeasurementCollector(resource);
361+
collector.AllowMeter("MixedInstrumentsTest");
353362

354363
using var meter = new Meter(name: "MixedInstrumentsTest", version: "1.0.0");
355364

@@ -406,6 +415,7 @@ public async Task ToOtlpResourceMetricsWithTagsAndAttributesTest()
406415
});
407416

408417
using var collector = new OtlpMeasurementCollector(resource);
418+
collector.AllowMeter("TagsTest");
409419

410420
using var meter = new Meter(name: "TagsTest", version: "1.0.0");
411421
var counter = meter.CreateCounter<int>("http_requests");
@@ -454,6 +464,7 @@ public async Task ToOtlpResourceMetricsWithComplexTagsTest()
454464
});
455465

456466
using var collector = new OtlpMeasurementCollector(resource);
467+
collector.AllowMeter("ComplexTagsTest");
457468

458469
using var meter = new Meter(name: "ComplexTagsTest", version: "1.0.0");
459470
var histogram = meter.CreateHistogram<double>("database_query_duration");

next-gen/test/OpenTelemetry.AutoInstrumentation.Sdk.Tests/ProtobufOtlpSpanExporterAsyncTests.cs

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,20 @@ namespace OpenTelemetry.AutoInstrumentation.Sdk.Tests;
1212

1313
public sealed class ProtobufOtlpSpanExporterAsyncTests : IDisposable
1414
{
15-
static ProtobufOtlpSpanExporterAsyncTests()
16-
{
17-
Activity.DefaultIdFormat = ActivityIdFormat.W3C;
18-
Activity.ForceDefaultIdFormat = true;
19-
}
20-
2115
private readonly ActivityListener _ActivityListener;
16+
private readonly ActivityIdFormat _PreviousDefaultIdFormat;
17+
private readonly bool _PreviousForceDefaultIdFormat;
2218

2319
public ProtobufOtlpSpanExporterAsyncTests()
2420
{
21+
// Store previous global settings
22+
_PreviousDefaultIdFormat = Activity.DefaultIdFormat;
23+
_PreviousForceDefaultIdFormat = Activity.ForceDefaultIdFormat;
24+
25+
// Set test-specific global settings
26+
Activity.DefaultIdFormat = ActivityIdFormat.W3C;
27+
Activity.ForceDefaultIdFormat = true;
28+
2529
_ActivityListener = new ActivityListener
2630
{
2731
ShouldListenTo = _ => true,
@@ -36,6 +40,10 @@ public ProtobufOtlpSpanExporterAsyncTests()
3640
public void Dispose()
3741
{
3842
_ActivityListener.Dispose();
43+
44+
// Restore previous global settings
45+
Activity.DefaultIdFormat = _PreviousDefaultIdFormat;
46+
Activity.ForceDefaultIdFormat = _PreviousForceDefaultIdFormat;
3947
}
4048

4149
[Fact]

next-gen/test/OpenTelemetry.AutoInstrumentation.Sdk.Tests/Serializer/OtlpArrayTagWriterTests.cs

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,21 @@ namespace OpenTelemetry.AutoInstrumentation.Sdk.Tests.Serializer;
88

99
public sealed class OtlpArrayTagWriterTests : IDisposable
1010
{
11-
static OtlpArrayTagWriterTests()
12-
{
13-
Activity.DefaultIdFormat = ActivityIdFormat.W3C;
14-
Activity.ForceDefaultIdFormat = true;
15-
}
16-
1711
private readonly ProtobufOtlpTagWriter.OtlpArrayTagWriter _ArrayTagWriter;
1812
private readonly ActivityListener _ActivityListener;
13+
private readonly ActivityIdFormat _PreviousDefaultIdFormat;
14+
private readonly bool _PreviousForceDefaultIdFormat;
1915

2016
public OtlpArrayTagWriterTests()
2117
{
18+
// Store previous global settings
19+
_PreviousDefaultIdFormat = Activity.DefaultIdFormat;
20+
_PreviousForceDefaultIdFormat = Activity.ForceDefaultIdFormat;
21+
22+
// Set test-specific global settings
23+
Activity.DefaultIdFormat = ActivityIdFormat.W3C;
24+
Activity.ForceDefaultIdFormat = true;
25+
2226
_ArrayTagWriter = new ProtobufOtlpTagWriter.OtlpArrayTagWriter();
2327
_ActivityListener = new ActivityListener
2428
{
@@ -150,5 +154,9 @@ public void Dispose()
150154
// Clean up the thread buffer after each test
151155
ProtobufOtlpTagWriter.OtlpArrayTagWriter.s_ThreadBuffer = null;
152156
_ActivityListener.Dispose();
157+
158+
// Restore previous global settings
159+
Activity.DefaultIdFormat = _PreviousDefaultIdFormat;
160+
Activity.ForceDefaultIdFormat = _PreviousForceDefaultIdFormat;
153161
}
154162
}

0 commit comments

Comments
 (0)