@@ -23,7 +23,9 @@ public void StateValuesAndScopeBufferingTest()
2323
2424 using var scope = scopeProvider . Push ( exportedItems ) ;
2525
26- var logRecord = new LogRecord ( ) ;
26+ var pool = LogRecordSharedPool . Current ;
27+
28+ var logRecord = pool . Rent ( ) ;
2729
2830 var state = new LogRecordTest . DisposingState ( "Hello world" ) ;
2931
@@ -60,6 +62,7 @@ public void StateValuesAndScopeBufferingTest()
6062 processor . Shutdown ( ) ;
6163
6264 Assert . Single ( exportedItems ) ;
65+ Assert . Same ( logRecord , exportedItems [ 0 ] ) ;
6366 }
6467
6568 [ Fact ]
@@ -74,14 +77,19 @@ public void StateBufferingTest()
7477 using var processor = new BatchLogRecordExportProcessor (
7578 new InMemoryExporter < LogRecord > ( exportedItems ) ) ;
7679
77- var logRecord = new LogRecord ( ) ;
80+ var pool = LogRecordSharedPool . Current ;
81+
82+ var logRecord = pool . Rent ( ) ;
7883
7984 var state = new LogRecordTest . DisposingState ( "Hello world" ) ;
8085 logRecord . State = state ;
8186
8287 processor . OnEnd ( logRecord ) ;
8388 processor . Shutdown ( ) ;
8489
90+ Assert . Single ( exportedItems ) ;
91+ Assert . Same ( logRecord , exportedItems [ 0 ] ) ;
92+
8593 state . Dispose ( ) ;
8694
8795 Assert . Throws < ObjectDisposedException > ( ( ) =>
@@ -93,5 +101,41 @@ public void StateBufferingTest()
93101 }
94102 } ) ;
95103 }
104+
105+ [ Fact ]
106+ public void CopyMadeWhenLogRecordIsFromThreadStaticPoolTest ( )
107+ {
108+ List < LogRecord > exportedItems = new ( ) ;
109+
110+ using var processor = new BatchLogRecordExportProcessor (
111+ new InMemoryExporter < LogRecord > ( exportedItems ) ) ;
112+
113+ var pool = LogRecordThreadStaticPool . Instance ;
114+
115+ var logRecord = pool . Rent ( ) ;
116+
117+ processor . OnEnd ( logRecord ) ;
118+ processor . Shutdown ( ) ;
119+
120+ Assert . Single ( exportedItems ) ;
121+ Assert . NotSame ( logRecord , exportedItems [ 0 ] ) ;
122+ }
123+
124+ [ Fact ]
125+ public void LogRecordAddedToBatchIfNotFromAnyPoolTest ( )
126+ {
127+ List < LogRecord > exportedItems = new ( ) ;
128+
129+ using var processor = new BatchLogRecordExportProcessor (
130+ new InMemoryExporter < LogRecord > ( exportedItems ) ) ;
131+
132+ var logRecord = new LogRecord ( ) ;
133+
134+ processor . OnEnd ( logRecord ) ;
135+ processor . Shutdown ( ) ;
136+
137+ Assert . Single ( exportedItems ) ;
138+ Assert . Same ( logRecord , exportedItems [ 0 ] ) ;
139+ }
96140}
97141#endif
0 commit comments