diff --git a/src/OpenTelemetry/Internal/SelfDiagnosticsConfigRefresher.cs b/src/OpenTelemetry/Internal/SelfDiagnosticsConfigRefresher.cs
index 6eada2568..4a548a95c 100644
--- a/src/OpenTelemetry/Internal/SelfDiagnosticsConfigRefresher.cs
+++ b/src/OpenTelemetry/Internal/SelfDiagnosticsConfigRefresher.cs
@@ -274,10 +274,18 @@ namespace OpenTelemetry.Internal
this.cancellationTokenSource.Dispose();
}
+ // Dispose EventListner before files, because EventListner writes to files.
+ if (this.eventListener != null)
+ {
+ this.eventListener.Dispose();
+ }
+
// Ensure worker thread properly finishes.
// Or it might have created another MemoryMappedFile in that thread
// after the CloseLogFile() below is called.
this.CloseLogFile();
+
+ // Dispose ThreadLocal variables after the file handles are disposed.
this.viewStream.Dispose();
this.memoryMappedFileCache.Dispose();
}
diff --git a/src/OpenTelemetry/Internal/SelfDiagnosticsEventListener.cs b/src/OpenTelemetry/Internal/SelfDiagnosticsEventListener.cs
index e542b17ed..923e781a8 100644
--- a/src/OpenTelemetry/Internal/SelfDiagnosticsEventListener.cs
+++ b/src/OpenTelemetry/Internal/SelfDiagnosticsEventListener.cs
@@ -67,6 +67,7 @@ namespace OpenTelemetry.Internal
public override void Dispose()
{
this.Dispose(true);
+ base.Dispose();
GC.SuppressFinalize(this);
}
@@ -85,6 +86,11 @@ namespace OpenTelemetry.Internal
/// The position of the buffer after the last byte of the resulting sequence.
internal static int EncodeInBuffer(string str, bool isParameter, byte[] buffer, int position)
{
+ if (string.IsNullOrEmpty(str))
+ {
+ return position;
+ }
+
int charCount = str.Length;
int ellipses = isParameter ? "{...}\n".Length : "...\n".Length;
@@ -338,9 +344,6 @@ namespace OpenTelemetry.Internal
}
this.disposedValue = true;
-
- // Should call base.Dispose(disposing) here, but EventListener doesn't have Dispose(bool).
- base.Dispose();
}
}
}
diff --git a/test/OpenTelemetry.Tests/Internal/SelfDiagnosticsConfigParserTest.cs b/test/OpenTelemetry.Tests/Internal/SelfDiagnosticsConfigParserTest.cs
index 0380d7afb..8bac38531 100644
--- a/test/OpenTelemetry.Tests/Internal/SelfDiagnosticsConfigParserTest.cs
+++ b/test/OpenTelemetry.Tests/Internal/SelfDiagnosticsConfigParserTest.cs
@@ -21,7 +21,6 @@ namespace OpenTelemetry.Internal.Tests
public class SelfDiagnosticsConfigParserTest
{
[Fact]
- [Trait("Platform", "Any")]
public void SelfDiagnosticsConfigParser_TryParseFilePath_Success()
{
string configJson = "{ \t \n "
@@ -33,7 +32,6 @@ namespace OpenTelemetry.Internal.Tests
}
[Fact]
- [Trait("Platform", "Any")]
public void SelfDiagnosticsConfigParser_TryParseFilePath_MissingField()
{
string configJson = @"{
@@ -44,7 +42,6 @@ namespace OpenTelemetry.Internal.Tests
}
[Fact]
- [Trait("Platform", "Any")]
public void SelfDiagnosticsConfigParser_TryParseFileSize()
{
string configJson = @"{
@@ -56,7 +53,6 @@ namespace OpenTelemetry.Internal.Tests
}
[Fact]
- [Trait("Platform", "Any")]
public void SelfDiagnosticsConfigParser_TryParseFileSize_CaseInsensitive()
{
string configJson = @"{
@@ -69,7 +65,6 @@ namespace OpenTelemetry.Internal.Tests
}
[Fact]
- [Trait("Platform", "Any")]
public void SelfDiagnosticsConfigParser_TryParseFileSize_MissingField()
{
string configJson = @"{
@@ -80,7 +75,6 @@ namespace OpenTelemetry.Internal.Tests
}
[Fact]
- [Trait("Platform", "Any")]
public void SelfDiagnosticsConfigParser_TryParseLogLevel()
{
string configJson = @"{
diff --git a/test/OpenTelemetry.Tests/Internal/SelfDiagnosticsConfigRefresherTest.cs b/test/OpenTelemetry.Tests/Internal/SelfDiagnosticsConfigRefresherTest.cs
index 3bb76500f..380756ad7 100644
--- a/test/OpenTelemetry.Tests/Internal/SelfDiagnosticsConfigRefresherTest.cs
+++ b/test/OpenTelemetry.Tests/Internal/SelfDiagnosticsConfigRefresherTest.cs
@@ -36,7 +36,6 @@ namespace OpenTelemetry.Internal.Tests
}
[Fact]
- [Trait("Platform", "Any")]
public void SelfDiagnosticsConfigRefresher_OmitAsConfigured()
{
try
@@ -63,7 +62,6 @@ namespace OpenTelemetry.Internal.Tests
}
[Fact]
- [Trait("Platform", "Any")]
public void SelfDiagnosticsConfigRefresher_CaptureAsConfigured()
{
try
diff --git a/test/OpenTelemetry.Tests/Internal/SelfDiagnosticsEventListenerTest.cs b/test/OpenTelemetry.Tests/Internal/SelfDiagnosticsEventListenerTest.cs
index 3d1b2b98f..0c0d96cfa 100644
--- a/test/OpenTelemetry.Tests/Internal/SelfDiagnosticsEventListenerTest.cs
+++ b/test/OpenTelemetry.Tests/Internal/SelfDiagnosticsEventListenerTest.cs
@@ -31,7 +31,6 @@ namespace OpenTelemetry.Internal.Tests
private const string EllipsesWithBrackets = "{...}\n";
[Fact]
- [Trait("Platform", "Any")]
public void SelfDiagnosticsEventListener_constructor_Invalid_Input()
{
// no configRefresher object
@@ -42,7 +41,6 @@ namespace OpenTelemetry.Internal.Tests
}
[Fact]
- [Trait("Platform", "Any")]
public void SelfDiagnosticsEventListener_EventSourceSetup_LowerSeverity()
{
var configRefresherMock = new Mock();
@@ -54,7 +52,6 @@ namespace OpenTelemetry.Internal.Tests
}
[Fact]
- [Trait("Platform", "Any")]
public void SelfDiagnosticsEventListener_EventSourceSetup_HigherSeverity()
{
var configRefresherMock = new Mock();
@@ -68,7 +65,6 @@ namespace OpenTelemetry.Internal.Tests
}
[Fact]
- [Trait("Platform", "Any")]
public void SelfDiagnosticsEventListener_WriteEvent()
{
// Arrange
@@ -94,7 +90,6 @@ namespace OpenTelemetry.Internal.Tests
}
[Fact]
- [Trait("Platform", "Any")]
public void SelfDiagnosticsEventListener_DateTimeGetBytes()
{
var configRefresherMock = new Mock();
@@ -133,7 +128,6 @@ namespace OpenTelemetry.Internal.Tests
}
[Fact]
- [Trait("Platform", "Any")]
public void SelfDiagnosticsEventListener_EmitEvent_OmitAsConfigured()
{
// Arrange
@@ -159,7 +153,6 @@ namespace OpenTelemetry.Internal.Tests
}
[Fact]
- [Trait("Platform", "Any")]
public void SelfDiagnosticsEventListener_EmitEvent_CaptureAsConfigured()
{
// Arrange
@@ -183,7 +176,15 @@ namespace OpenTelemetry.Internal.Tests
}
[Fact]
- [Trait("Platform", "Any")]
+ public void SelfDiagnosticsEventListener_EncodeInBuffer_Null()
+ {
+ byte[] buffer = new byte[20];
+ int startPos = 0;
+ int endPos = SelfDiagnosticsEventListener.EncodeInBuffer(null, false, buffer, startPos);
+ Assert.Equal(startPos, endPos);
+ }
+
+ [Fact]
public void SelfDiagnosticsEventListener_EncodeInBuffer_Empty()
{
byte[] buffer = new byte[20];
@@ -194,7 +195,6 @@ namespace OpenTelemetry.Internal.Tests
}
[Fact]
- [Trait("Platform", "Any")]
public void SelfDiagnosticsEventListener_EncodeInBuffer_EnoughSpace()
{
byte[] buffer = new byte[20];
@@ -208,7 +208,6 @@ namespace OpenTelemetry.Internal.Tests
}
[Fact]
- [Trait("Platform", "Any")]
public void SelfDiagnosticsEventListener_EncodeInBuffer_NotEnoughSpaceForFullString()
{
byte[] buffer = new byte[20];
@@ -222,7 +221,6 @@ namespace OpenTelemetry.Internal.Tests
}
[Fact]
- [Trait("Platform", "Any")]
public void SelfDiagnosticsEventListener_EncodeInBuffer_NotEvenSpaceForTruncatedString()
{
byte[] buffer = new byte[20];
@@ -233,7 +231,6 @@ namespace OpenTelemetry.Internal.Tests
}
[Fact]
- [Trait("Platform", "Any")]
public void SelfDiagnosticsEventListener_EncodeInBuffer_NotEvenSpaceForTruncationEllipses()
{
byte[] buffer = new byte[20];
@@ -243,7 +240,6 @@ namespace OpenTelemetry.Internal.Tests
}
[Fact]
- [Trait("Platform", "Any")]
public void SelfDiagnosticsEventListener_EncodeInBuffer_IsParameter_EnoughSpace()
{
byte[] buffer = new byte[20];
@@ -254,7 +250,6 @@ namespace OpenTelemetry.Internal.Tests
}
[Fact]
- [Trait("Platform", "Any")]
public void SelfDiagnosticsEventListener_EncodeInBuffer_IsParameter_NotEnoughSpaceForFullString()
{
byte[] buffer = new byte[20];
@@ -265,7 +260,6 @@ namespace OpenTelemetry.Internal.Tests
}
[Fact]
- [Trait("Platform", "Any")]
public void SelfDiagnosticsEventListener_EncodeInBuffer_IsParameter_NotEvenSpaceForTruncatedString()
{
byte[] buffer = new byte[20];
@@ -276,7 +270,6 @@ namespace OpenTelemetry.Internal.Tests
}
[Fact]
- [Trait("Platform", "Any")]
public void SelfDiagnosticsEventListener_EncodeInBuffer_IsParameter_NotEvenSpaceForTruncationEllipses()
{
byte[] buffer = new byte[20];