@@ -23,7 +23,9 @@ public void StateValuesAndScopeBufferingTest()
23
23
24
24
using var scope = scopeProvider . Push ( exportedItems ) ;
25
25
26
- var logRecord = new LogRecord ( ) ;
26
+ var pool = LogRecordSharedPool . Current ;
27
+
28
+ var logRecord = pool . Rent ( ) ;
27
29
28
30
var state = new LogRecordTest . DisposingState ( "Hello world" ) ;
29
31
@@ -60,6 +62,7 @@ public void StateValuesAndScopeBufferingTest()
60
62
processor . Shutdown ( ) ;
61
63
62
64
Assert . Single ( exportedItems ) ;
65
+ Assert . Same ( logRecord , exportedItems [ 0 ] ) ;
63
66
}
64
67
65
68
[ Fact ]
@@ -74,14 +77,19 @@ public void StateBufferingTest()
74
77
using var processor = new BatchLogRecordExportProcessor (
75
78
new InMemoryExporter < LogRecord > ( exportedItems ) ) ;
76
79
77
- var logRecord = new LogRecord ( ) ;
80
+ var pool = LogRecordSharedPool . Current ;
81
+
82
+ var logRecord = pool . Rent ( ) ;
78
83
79
84
var state = new LogRecordTest . DisposingState ( "Hello world" ) ;
80
85
logRecord . State = state ;
81
86
82
87
processor . OnEnd ( logRecord ) ;
83
88
processor . Shutdown ( ) ;
84
89
90
+ Assert . Single ( exportedItems ) ;
91
+ Assert . Same ( logRecord , exportedItems [ 0 ] ) ;
92
+
85
93
state . Dispose ( ) ;
86
94
87
95
Assert . Throws < ObjectDisposedException > ( ( ) =>
@@ -93,5 +101,41 @@ public void StateBufferingTest()
93
101
}
94
102
} ) ;
95
103
}
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
+ }
96
140
}
97
141
#endif
0 commit comments