Skip to content

Commit 24a13ab

Browse files
authored
[OpenTelemetry.Tests] enable analysis (#6265)
1 parent 2ec8931 commit 24a13ab

File tree

48 files changed

+445
-348
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+445
-348
lines changed

src/OpenTelemetry/Logs/LoggerProviderSdk.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -125,10 +125,10 @@ public void AddProcessor(BaseProcessor<LogRecord> processor)
125125
processorAdded.Append(processor);
126126
processorAdded.Append('\'');
127127

128-
var newCompositeProcessor = new CompositeProcessor<LogRecord>(new[]
129-
{
128+
var newCompositeProcessor = new CompositeProcessor<LogRecord>(
129+
[
130130
this.Processor,
131-
});
131+
]);
132132
newCompositeProcessor.SetParentProvider(this);
133133
newCompositeProcessor.AddProcessor(processor);
134134
this.Processor = newCompositeProcessor;

test/OpenTelemetry.Tests/BaseExporterTests.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,13 @@ public class BaseExporterTests
1111
public void Verify_ForceFlush_HandlesException()
1212
{
1313
// By default, ForceFlush should return true.
14-
var testExporter = new DelegatingExporter<object>();
14+
using var testExporter = new DelegatingExporter<object>();
1515
Assert.True(testExporter.ForceFlush());
1616

1717
// BaseExporter should catch any exceptions and return false.
18-
var exceptionTestExporter = new DelegatingExporter<object>
18+
using var exceptionTestExporter = new DelegatingExporter<object>
1919
{
20-
OnForceFlushFunc = (timeout) => throw new Exception("test exception"),
20+
OnForceFlushFunc = _ => throw new InvalidOperationException("test exception"),
2121
};
2222
Assert.False(exceptionTestExporter.ForceFlush());
2323
}
@@ -26,7 +26,7 @@ public void Verify_ForceFlush_HandlesException()
2626
public void Verify_Shutdown_HandlesSecond()
2727
{
2828
// By default, ForceFlush should return true.
29-
var testExporter = new DelegatingExporter<object>();
29+
using var testExporter = new DelegatingExporter<object>();
3030
Assert.True(testExporter.Shutdown());
3131

3232
// A second Shutdown should return false.
@@ -37,9 +37,9 @@ public void Verify_Shutdown_HandlesSecond()
3737
public void Verify_Shutdown_HandlesException()
3838
{
3939
// BaseExporter should catch any exceptions and return false.
40-
var exceptionTestExporter = new DelegatingExporter<object>
40+
using var exceptionTestExporter = new DelegatingExporter<object>
4141
{
42-
OnShutdownFunc = (timeout) => throw new Exception("test exception"),
42+
OnShutdownFunc = _ => throw new InvalidOperationException("test exception"),
4343
};
4444
Assert.False(exceptionTestExporter.Shutdown());
4545
}

test/OpenTelemetry.Tests/BaseProcessorTests.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,19 +11,19 @@ public class BaseProcessorTests
1111
public void Verify_ForceFlush_HandlesException()
1212
{
1313
// By default, ForceFlush should return true.
14-
var testProcessor = new DelegatingProcessor<object>();
14+
using var testProcessor = new DelegatingProcessor<object>();
1515
Assert.True(testProcessor.ForceFlush());
1616

1717
// BaseExporter should catch any exceptions and return false.
18-
testProcessor.OnForceFlushFunc = (timeout) => throw new Exception("test exception");
18+
testProcessor.OnForceFlushFunc = _ => throw new InvalidOperationException("test exception");
1919
Assert.False(testProcessor.ForceFlush());
2020
}
2121

2222
[Fact]
2323
public void Verify_Shutdown_HandlesSecond()
2424
{
2525
// By default, Shutdown should return true.
26-
var testProcessor = new DelegatingProcessor<object>();
26+
using var testProcessor = new DelegatingProcessor<object>();
2727
Assert.True(testProcessor.Shutdown());
2828

2929
// A second Shutdown should return false.
@@ -34,17 +34,17 @@ public void Verify_Shutdown_HandlesSecond()
3434
public void Verify_Shutdown_HandlesException()
3535
{
3636
// BaseExporter should catch any exceptions and return false.
37-
var exceptionTestProcessor = new DelegatingProcessor<object>
37+
using var exceptionTestProcessor = new DelegatingProcessor<object>
3838
{
39-
OnShutdownFunc = (timeout) => throw new Exception("test exception"),
39+
OnShutdownFunc = _ => throw new InvalidOperationException("test exception"),
4040
};
4141
Assert.False(exceptionTestProcessor.Shutdown());
4242
}
4343

4444
[Fact]
4545
public void NoOp()
4646
{
47-
var testProcessor = new DelegatingProcessor<object>();
47+
using var testProcessor = new DelegatingProcessor<object>();
4848

4949
// These two methods are no-op, but account for 7% of the test coverage.
5050
testProcessor.OnStart(new object());

test/OpenTelemetry.Tests/Concurrency/MetricsConcurrencyTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public void MultithreadedLongHistogramTestConcurrencyTest()
2828
.WithTestingIterations(100)
2929
.WithMemoryAccessRaceCheckingEnabled(true);
3030

31-
var test = TestingEngine.Create(config, this.aggregatorTests.MultiThreadedHistogramUpdateAndSnapShotTest);
31+
using var test = TestingEngine.Create(config, this.aggregatorTests.MultiThreadedHistogramUpdateAndSnapShotTest);
3232

3333
test.Run();
3434

test/OpenTelemetry.Tests/Internal/AssemblyVersionExtensionsTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public void ParseAssemblyInformationalVersionTests(string informationalVersion,
2525
Assert.Equal(expectedVersion, actualVersion);
2626
}
2727

28-
private class TestAssembly(string informationalVersion) : Assembly
28+
private sealed class TestAssembly(string informationalVersion) : Assembly
2929
{
3030
public override object[] GetCustomAttributes(Type attributeType, bool inherit)
3131
{

test/OpenTelemetry.Tests/Internal/PeriodicExportingMetricReaderHelperTests.cs

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
// Copyright The OpenTelemetry Authors
22
// SPDX-License-Identifier: Apache-2.0
33

4+
using System.Globalization;
45
using Microsoft.Extensions.Configuration;
56
using OpenTelemetry.Exporter;
67
using OpenTelemetry.Metrics;
@@ -23,7 +24,9 @@ public void Dispose()
2324
[Fact]
2425
public void CreatePeriodicExportingMetricReader_Defaults()
2526
{
27+
#pragma warning disable CA2000 // Dispose objects before losing scope
2628
var reader = CreatePeriodicExportingMetricReader();
29+
#pragma warning restore CA2000 // Dispose objects before losing scope
2730

2831
Assert.Equal(60000, reader.ExportIntervalMilliseconds);
2932
Assert.Equal(30000, reader.ExportTimeoutMilliseconds);
@@ -34,7 +37,7 @@ public void CreatePeriodicExportingMetricReader_Defaults()
3437
public void CreatePeriodicExportingMetricReader_TemporalityPreference_FromOptions()
3538
{
3639
var value = MetricReaderTemporalityPreference.Delta;
37-
var reader = CreatePeriodicExportingMetricReader(new()
40+
using var reader = CreatePeriodicExportingMetricReader(new()
3841
{
3942
TemporalityPreference = value,
4043
});
@@ -47,7 +50,7 @@ public void CreatePeriodicExportingMetricReader_ExportIntervalMilliseconds_FromO
4750
{
4851
Environment.SetEnvironmentVariable(PeriodicExportingMetricReaderOptions.OTelMetricExportIntervalEnvVarKey, "88888"); // should be ignored, as value set via options has higher priority
4952
var value = 123;
50-
var reader = CreatePeriodicExportingMetricReader(new()
53+
using var reader = CreatePeriodicExportingMetricReader(new()
5154
{
5255
PeriodicExportingMetricReaderOptions = new()
5356
{
@@ -63,7 +66,7 @@ public void CreatePeriodicExportingMetricReader_ExportTimeoutMilliseconds_FromOp
6366
{
6467
Environment.SetEnvironmentVariable(PeriodicExportingMetricReaderOptions.OTelMetricExportTimeoutEnvVarKey, "99999"); // should be ignored, as value set via options has higher priority
6568
var value = 456;
66-
var reader = CreatePeriodicExportingMetricReader(new()
69+
using var reader = CreatePeriodicExportingMetricReader(new()
6770
{
6871
PeriodicExportingMetricReaderOptions = new()
6972
{
@@ -78,8 +81,8 @@ public void CreatePeriodicExportingMetricReader_ExportTimeoutMilliseconds_FromOp
7881
public void CreatePeriodicExportingMetricReader_ExportIntervalMilliseconds_FromEnvVar()
7982
{
8083
var value = 789;
81-
Environment.SetEnvironmentVariable(PeriodicExportingMetricReaderOptions.OTelMetricExportIntervalEnvVarKey, value.ToString());
82-
var reader = CreatePeriodicExportingMetricReader();
84+
Environment.SetEnvironmentVariable(PeriodicExportingMetricReaderOptions.OTelMetricExportIntervalEnvVarKey, value.ToString(CultureInfo.InvariantCulture));
85+
using var reader = CreatePeriodicExportingMetricReader();
8386

8487
Assert.Equal(value, reader.ExportIntervalMilliseconds);
8588
}
@@ -88,8 +91,8 @@ public void CreatePeriodicExportingMetricReader_ExportIntervalMilliseconds_FromE
8891
public void CreatePeriodicExportingMetricReader_ExportTimeoutMilliseconds_FromEnvVar()
8992
{
9093
var value = 246;
91-
Environment.SetEnvironmentVariable(PeriodicExportingMetricReaderOptions.OTelMetricExportTimeoutEnvVarKey, value.ToString());
92-
var reader = CreatePeriodicExportingMetricReader();
94+
Environment.SetEnvironmentVariable(PeriodicExportingMetricReaderOptions.OTelMetricExportTimeoutEnvVarKey, value.ToString(CultureInfo.InvariantCulture));
95+
using var reader = CreatePeriodicExportingMetricReader();
9396

9497
Assert.Equal(value, reader.ExportTimeoutMilliseconds);
9598
}
@@ -131,7 +134,9 @@ private static PeriodicExportingMetricReader CreatePeriodicExportingMetricReader
131134
{
132135
options ??= new();
133136

137+
#pragma warning disable CA2000 // Dispose objects before losing scope
134138
var dummyMetricExporter = new InMemoryExporter<Metric>(Array.Empty<Metric>());
139+
#pragma warning restore CA2000 // Dispose objects before losing scope
135140
return PeriodicExportingMetricReaderHelper.CreatePeriodicExportingMetricReader(dummyMetricExporter, options);
136141
}
137142
}

test/OpenTelemetry.Tests/Internal/SelfDiagnosticsConfigRefresherTests.cs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ namespace OpenTelemetry.Internal.Tests;
1111

1212
public class SelfDiagnosticsConfigRefresherTests
1313
{
14-
private static readonly string ConfigFilePath = SelfDiagnosticsConfigParser.ConfigFileName;
14+
private const string ConfigFilePath = SelfDiagnosticsConfigParser.ConfigFileName;
1515
private static readonly byte[] MessageOnNewFile = SelfDiagnosticsConfigRefresher.MessageOnNewFile;
1616
private static readonly string MessageOnNewFileString = Encoding.UTF8.GetString(SelfDiagnosticsConfigRefresher.MessageOnNewFile);
1717

@@ -38,7 +38,7 @@ public void SelfDiagnosticsConfigRefresher_OmitAsConfigured()
3838
byte[] actualBytes = ReadFile(logDirectory, bufferSize);
3939
string logText = Encoding.UTF8.GetString(actualBytes);
4040
this.output.WriteLine(logText); // for debugging in case the test fails
41-
Assert.StartsWith(MessageOnNewFileString, logText);
41+
Assert.StartsWith(MessageOnNewFileString, logText, StringComparison.Ordinal);
4242

4343
// The event was omitted
4444
Assert.Equal('\0', (char)actualBytes[MessageOnNewFile.Length]);
@@ -65,12 +65,12 @@ public void SelfDiagnosticsConfigRefresher_CaptureAsConfigured()
6565
int bufferSize = 2 * (MessageOnNewFileString.Length + expectedMessage.Length);
6666
byte[] actualBytes = ReadFile(logDirectory, bufferSize);
6767
string logText = Encoding.UTF8.GetString(actualBytes);
68-
Assert.StartsWith(MessageOnNewFileString, logText);
68+
Assert.StartsWith(MessageOnNewFileString, logText, StringComparison.Ordinal);
6969

7070
// The event was captured
7171
string logLine = logText.Substring(MessageOnNewFileString.Length);
7272
string logMessage = ParseLogMessage(logLine);
73-
Assert.StartsWith(expectedMessage, logMessage);
73+
Assert.StartsWith(expectedMessage, logMessage, StringComparison.Ordinal);
7474
}
7575
finally
7676
{
@@ -88,7 +88,11 @@ private static string ParseLogMessage(string logLine)
8888
private static byte[] ReadFile(string logDirectory, int byteCount)
8989
{
9090
var outputFileName = Path.GetFileName(Process.GetCurrentProcess().MainModule?.FileName) + "."
91+
#if NET
92+
+ Environment.ProcessId + ".log";
93+
#else
9194
+ Process.GetCurrentProcess().Id + ".log";
95+
#endif
9296
var outputFilePath = Path.Combine(logDirectory, outputFileName);
9397
using var file = File.Open(outputFilePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
9498
byte[] actualBytes = new byte[byteCount];

test/OpenTelemetry.Tests/Internal/SelfDiagnosticsEventListenerTests.cs

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
// SPDX-License-Identifier: Apache-2.0
33

44
using System.Diagnostics.Tracing;
5+
using System.Globalization;
56
using System.IO.MemoryMappedFiles;
67
using System.Text;
78
using OpenTelemetry.Tests;
@@ -28,8 +29,8 @@ public void SelfDiagnosticsEventListener_constructor_Invalid_Input()
2829
[Fact]
2930
public void SelfDiagnosticsEventListener_EventSourceSetup_LowerSeverity()
3031
{
31-
var configRefresher = new TestSelfDiagnosticsConfigRefresher();
32-
_ = new SelfDiagnosticsEventListener(EventLevel.Error, configRefresher);
32+
using var configRefresher = new TestSelfDiagnosticsConfigRefresher();
33+
using var listener = new SelfDiagnosticsEventListener(EventLevel.Error, configRefresher);
3334

3435
// Emitting a Verbose event. Or any EventSource event with lower severity than Error.
3536
OpenTelemetrySdkEventSource.Log.ActivityStarted("Activity started", "1");
@@ -39,8 +40,8 @@ public void SelfDiagnosticsEventListener_EventSourceSetup_LowerSeverity()
3940
[Fact]
4041
public void SelfDiagnosticsEventListener_EventSourceSetup_HigherSeverity()
4142
{
42-
var configRefresher = new TestSelfDiagnosticsConfigRefresher();
43-
_ = new SelfDiagnosticsEventListener(EventLevel.Error, configRefresher);
43+
using var configRefresher = new TestSelfDiagnosticsConfigRefresher();
44+
using var listener = new SelfDiagnosticsEventListener(EventLevel.Error, configRefresher);
4445

4546
// Emitting an Error event. Or any EventSource event with higher than or equal to to Error severity.
4647
OpenTelemetrySdkEventSource.Log.TracerProviderException("TestEvent", "Exception Details");
@@ -53,9 +54,9 @@ public void SelfDiagnosticsEventListener_WriteEvent()
5354
// Arrange
5455
var memoryMappedFile = MemoryMappedFile.CreateFromFile(LOGFILEPATH, FileMode.Create, null, 1024);
5556
Stream stream = memoryMappedFile.CreateViewStream();
56-
var configRefresher = new TestSelfDiagnosticsConfigRefresher(stream);
57+
using var configRefresher = new TestSelfDiagnosticsConfigRefresher(stream);
5758
string eventMessage = "Event Message";
58-
var listener = new SelfDiagnosticsEventListener(EventLevel.Error, configRefresher);
59+
using var listener = new SelfDiagnosticsEventListener(EventLevel.Error, configRefresher);
5960

6061
// Act: call WriteEvent method directly
6162
listener.WriteEvent(eventMessage, null);
@@ -70,15 +71,15 @@ public void SelfDiagnosticsEventListener_WriteEvent()
7071
[Fact]
7172
public void SelfDiagnosticsEventListener_DateTimeGetBytes()
7273
{
73-
var configRefresher = new TestSelfDiagnosticsConfigRefresher();
74-
var listener = new SelfDiagnosticsEventListener(EventLevel.Error, configRefresher);
74+
using var configRefresher = new TestSelfDiagnosticsConfigRefresher();
75+
using var listener = new SelfDiagnosticsEventListener(EventLevel.Error, configRefresher);
7576

7677
// Check DateTimeKind of Utc, Local, and Unspecified
7778
DateTime[] datetimes =
7879
[
79-
DateTime.SpecifyKind(DateTime.Parse("1996-12-01T14:02:31.1234567-08:00"), DateTimeKind.Utc),
80-
DateTime.SpecifyKind(DateTime.Parse("1996-12-01T14:02:31.1234567-08:00"), DateTimeKind.Local),
81-
DateTime.SpecifyKind(DateTime.Parse("1996-12-01T14:02:31.1234567-08:00"), DateTimeKind.Unspecified),
80+
DateTime.SpecifyKind(DateTime.Parse("1996-12-01T14:02:31.1234567-08:00", CultureInfo.InvariantCulture), DateTimeKind.Utc),
81+
DateTime.SpecifyKind(DateTime.Parse("1996-12-01T14:02:31.1234567-08:00", CultureInfo.InvariantCulture), DateTimeKind.Local),
82+
DateTime.SpecifyKind(DateTime.Parse("1996-12-01T14:02:31.1234567-08:00", CultureInfo.InvariantCulture), DateTimeKind.Unspecified),
8283
DateTime.UtcNow,
8384
DateTime.Now,
8485
];
@@ -109,10 +110,10 @@ public void SelfDiagnosticsEventListener_DateTimeGetBytes()
109110
public void SelfDiagnosticsEventListener_EmitEvent_OmitAsConfigured()
110111
{
111112
// Arrange
112-
var configRefresher = new TestSelfDiagnosticsConfigRefresher();
113+
using var configRefresher = new TestSelfDiagnosticsConfigRefresher();
113114
var memoryMappedFile = MemoryMappedFile.CreateFromFile(LOGFILEPATH, FileMode.Create, null, 1024);
114115
Stream stream = memoryMappedFile.CreateViewStream();
115-
_ = new SelfDiagnosticsEventListener(EventLevel.Error, configRefresher);
116+
using var listener = new SelfDiagnosticsEventListener(EventLevel.Error, configRefresher);
116117

117118
// Act: emit an event with severity lower than configured
118119
OpenTelemetrySdkEventSource.Log.ActivityStarted("ActivityStart", "123");
@@ -148,8 +149,8 @@ public void SelfDiagnosticsEventListener_EmitEvent_CaptureAsConfigured()
148149
// Arrange
149150
var memoryMappedFile = MemoryMappedFile.CreateFromFile(LOGFILEPATH, FileMode.Create, null, 1024);
150151
Stream stream = memoryMappedFile.CreateViewStream();
151-
var configRefresher = new TestSelfDiagnosticsConfigRefresher(stream);
152-
_ = new SelfDiagnosticsEventListener(EventLevel.Error, configRefresher);
152+
using var configRefresher = new TestSelfDiagnosticsConfigRefresher(stream);
153+
using var listener = new SelfDiagnosticsEventListener(EventLevel.Error, configRefresher);
153154

154155
// Act: emit an event with severity equal to configured
155156
OpenTelemetrySdkEventSource.Log.TracerProviderException("TestEvent", "Exception Details");
@@ -287,7 +288,7 @@ private static void AssertFileOutput(string filePath, string eventMessage)
287288

288289
string logLine = Encoding.UTF8.GetString(buffer, 0, totalBytesRead);
289290
string logMessage = ParseLogMessage(logLine);
290-
Assert.StartsWith(eventMessage, logMessage);
291+
Assert.StartsWith(eventMessage, logMessage, StringComparison.Ordinal);
291292
}
292293

293294
private static string ParseLogMessage(string logLine)
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
// Copyright The OpenTelemetry Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
using Microsoft.Extensions.Logging;
5+
6+
namespace OpenTelemetry.Tests;
7+
8+
internal static partial class LoggerExtensions
9+
{
10+
[LoggerMessage(LogLevel.Information, "Hello world {Data}")]
11+
public static partial void HelloWorld(this ILogger logger, int data);
12+
13+
[LoggerMessage(LogLevel.Information, "Hello world {Data}")]
14+
public static partial void HelloWorld(this ILogger logger, string data);
15+
16+
[LoggerMessage(LogLevel.Information, "Hello, World!")]
17+
public static partial void HelloWorld(this ILogger logger);
18+
19+
[LoggerMessage(LogLevel.Information, "Hello from {Name} {Price}.")]
20+
public static partial void HelloFrom(this ILogger logger, string name, double price);
21+
22+
[LoggerMessage(LogLevel.Information, "{Food}")]
23+
public static partial void Food(this ILogger logger, object food);
24+
25+
[LoggerMessage(LogLevel.Information, "Log")]
26+
public static partial void Log(this ILogger logger);
27+
28+
[LoggerMessage("Log")]
29+
public static partial void Log(this ILogger logger, LogLevel logLevel);
30+
31+
[LoggerMessage(LogLevel.Information, "Log within a dropped activity")]
32+
public static partial void LogWithinADroppedActivity(this ILogger logger);
33+
34+
[LoggerMessage(LogLevel.Information, "Log within activity marked as RecordOnly")]
35+
public static partial void LogWithinRecordOnlyActivity(this ILogger logger);
36+
37+
[LoggerMessage(LogLevel.Information, "Log within activity marked as RecordAndSample")]
38+
public static partial void LogWithinRecordAndSampleActivity(this ILogger logger);
39+
40+
[LoggerMessage(LogLevel.Information, "Dispose called")]
41+
public static partial void DisposedCalled(this ILogger logger);
42+
43+
[LoggerMessage(LogLevel.Information, "{Product} {Year}!")]
44+
public static partial void LogProduct(this ILogger logger, string product, int year);
45+
46+
[LoggerMessage(LogLevel.Information, "{Product} {Year} {Complex}!")]
47+
public static partial void LogProduct(this ILogger logger, string product, int year, object complex);
48+
49+
[LoggerMessage(LogLevel.Information, "Exception Occurred")]
50+
public static partial void LogException(this ILogger logger, Exception exception);
51+
}

0 commit comments

Comments
 (0)