8
8
import static io .opentelemetry .sdk .extension .incubator .fileconfig .FileConfigTestUtil .createTempFileWithContent ;
9
9
import static org .assertj .core .api .Assertions .assertThat ;
10
10
import static org .assertj .core .api .Assertions .assertThatThrownBy ;
11
- import static org .mockito .Mockito .spy ;
12
- import static org .mockito .Mockito .verify ;
13
- import static org .mockito .Mockito .when ;
14
11
15
12
import com .google .common .collect .ImmutableMap ;
16
13
import com .linecorp .armeria .testing .junit5 .server .SelfSignedCertificateExtension ;
21
18
import io .opentelemetry .exporter .otlp .logs .OtlpGrpcLogRecordExporter ;
22
19
import io .opentelemetry .internal .testing .CleanupExtension ;
23
20
import io .opentelemetry .sdk .autoconfigure .internal .SpiHelper ;
24
- import io .opentelemetry .sdk .autoconfigure .spi .internal .ComponentProvider ;
25
21
import io .opentelemetry .sdk .extension .incubator .fileconfig .component .LogRecordExporterComponentProvider ;
26
22
import io .opentelemetry .sdk .extension .incubator .fileconfig .internal .model .ExperimentalOtlpFileExporterModel ;
27
23
import io .opentelemetry .sdk .extension .incubator .fileconfig .internal .model .LogRecordExporterModel ;
36
32
import java .time .Duration ;
37
33
import java .util .ArrayList ;
38
34
import java .util .Arrays ;
39
- import java .util .Collections ;
40
35
import java .util .List ;
41
- import java .util .stream .Collectors ;
42
36
import org .junit .jupiter .api .BeforeEach ;
43
37
import org .junit .jupiter .api .Test ;
44
- import org .junit .jupiter .api .extension .ExtendWith ;
45
38
import org .junit .jupiter .api .extension .RegisterExtension ;
46
39
import org .junit .jupiter .api .io .TempDir ;
47
- import org .mockito .ArgumentCaptor ;
48
- import org .mockito .Mockito ;
49
- import org .mockito .junit .jupiter .MockitoExtension ;
50
- import org .mockito .junit .jupiter .MockitoSettings ;
51
- import org .mockito .quality .Strictness ;
52
-
53
- @ ExtendWith (MockitoExtension .class )
54
- @ MockitoSettings (strictness = Strictness .LENIENT )
40
+
55
41
class LogRecordExporterFactoryTest {
56
42
57
43
@ RegisterExtension
@@ -62,39 +48,24 @@ class LogRecordExporterFactoryTest {
62
48
63
49
@ RegisterExtension CleanupExtension cleanup = new CleanupExtension ();
64
50
65
- private final SpiHelper spiHelper =
66
- spy (SpiHelper .create (SpanExporterFactoryTest .class .getClassLoader ()));
67
- private final DeclarativeConfigContext context = new DeclarativeConfigContext (spiHelper );
68
- private List <ComponentProvider > loadedComponentProviders = Collections .emptyList ();
51
+ private CapturingComponentLoader capturingComponentLoader ;
52
+ private SpiHelper spiHelper ;
53
+ private DeclarativeConfigContext context ;
69
54
70
55
@ BeforeEach
71
- @ SuppressWarnings ("unchecked" )
72
56
void setup () {
73
- when (spiHelper .load (ComponentProvider .class ))
74
- .thenAnswer (
75
- invocation -> {
76
- List <ComponentProvider > result =
77
- (List <ComponentProvider >) invocation .callRealMethod ();
78
- loadedComponentProviders =
79
- result .stream ().map (Mockito ::spy ).collect (Collectors .toList ());
80
- return loadedComponentProviders ;
81
- });
82
- }
83
-
84
- private ComponentProvider getComponentProvider (String name , Class <?> type ) {
85
- return loadedComponentProviders .stream ()
86
- .filter (
87
- componentProvider ->
88
- componentProvider .getName ().equals (name )
89
- && componentProvider .getType ().equals (type ))
90
- .findFirst ()
91
- .orElseThrow (IllegalStateException ::new );
57
+ capturingComponentLoader = new CapturingComponentLoader ();
58
+ spiHelper = SpiHelper .create (capturingComponentLoader );
59
+ context = new DeclarativeConfigContext (spiHelper );
92
60
}
93
61
94
62
@ Test
95
63
void create_OtlpHttpDefaults () {
96
64
List <Closeable > closeables = new ArrayList <>();
97
- OtlpHttpLogRecordExporter expectedExporter = OtlpHttpLogRecordExporter .getDefault ();
65
+ OtlpHttpLogRecordExporter expectedExporter =
66
+ OtlpHttpLogRecordExporter .getDefault ().toBuilder ()
67
+ .setComponentLoader (capturingComponentLoader ) // needed for the toString() check to pass
68
+ .build ();
98
69
cleanup .addCloseable (expectedExporter );
99
70
100
71
LogRecordExporter exporter =
@@ -106,14 +77,10 @@ void create_OtlpHttpDefaults() {
106
77
107
78
assertThat (exporter .toString ()).isEqualTo (expectedExporter .toString ());
108
79
109
- assertThat (exporter .toString ()).isEqualTo (expectedExporter .toString ());
110
-
111
- ArgumentCaptor <DeclarativeConfigProperties > configCaptor =
112
- ArgumentCaptor .forClass (DeclarativeConfigProperties .class );
113
- ComponentProvider componentProvider =
114
- getComponentProvider ("otlp_http" , LogRecordExporter .class );
115
- verify (componentProvider ).create (configCaptor .capture ());
116
- DeclarativeConfigProperties configProperties = configCaptor .getValue ();
80
+ // Verify the configuration passed to the component provider
81
+ DeclarativeConfigProperties configProperties =
82
+ capturingComponentLoader .getCapturedConfig ("otlp_http" );
83
+ assertThat (configProperties ).isNotNull ();
117
84
assertThat (configProperties .getString ("protocol" )).isNull ();
118
85
assertThat (configProperties .getString ("endpoint" )).isNull ();
119
86
assertThat (configProperties .getStructured ("headers" )).isNull ();
@@ -135,6 +102,7 @@ void create_OtlpHttpConfigured(@TempDir Path tempDir)
135
102
.addHeader ("key2" , "value2" )
136
103
.setTimeout (Duration .ofSeconds (15 ))
137
104
.setCompression ("gzip" )
105
+ .setComponentLoader (capturingComponentLoader ) // needed for the toString() check to pass
138
106
.build ();
139
107
cleanup .addCloseable (expectedExporter );
140
108
@@ -174,12 +142,10 @@ void create_OtlpHttpConfigured(@TempDir Path tempDir)
174
142
175
143
assertThat (exporter .toString ()).isEqualTo (expectedExporter .toString ());
176
144
177
- ArgumentCaptor <DeclarativeConfigProperties > configCaptor =
178
- ArgumentCaptor .forClass (DeclarativeConfigProperties .class );
179
- ComponentProvider componentProvider =
180
- getComponentProvider ("otlp_http" , LogRecordExporter .class );
181
- verify (componentProvider ).create (configCaptor .capture ());
182
- DeclarativeConfigProperties configProperties = configCaptor .getValue ();
145
+ // Verify the configuration passed to the component provider
146
+ DeclarativeConfigProperties configProperties =
147
+ capturingComponentLoader .getCapturedConfig ("otlp_http" );
148
+ assertThat (configProperties ).isNotNull ();
183
149
assertThat (configProperties .getString ("endpoint" )).isEqualTo ("http://example:4318/v1/logs" );
184
150
List <DeclarativeConfigProperties > headers = configProperties .getStructuredList ("headers" );
185
151
assertThat (headers )
@@ -204,7 +170,10 @@ void create_OtlpHttpConfigured(@TempDir Path tempDir)
204
170
@ Test
205
171
void create_OtlpGrpcDefaults () {
206
172
List <Closeable > closeables = new ArrayList <>();
207
- OtlpGrpcLogRecordExporter expectedExporter = OtlpGrpcLogRecordExporter .getDefault ();
173
+ OtlpGrpcLogRecordExporter expectedExporter =
174
+ OtlpGrpcLogRecordExporter .getDefault ().toBuilder ()
175
+ .setComponentLoader (capturingComponentLoader ) // needed for the toString() check to pass
176
+ .build ();
208
177
cleanup .addCloseable (expectedExporter );
209
178
210
179
LogRecordExporter exporter =
@@ -216,14 +185,10 @@ void create_OtlpGrpcDefaults() {
216
185
217
186
assertThat (exporter .toString ()).isEqualTo (expectedExporter .toString ());
218
187
219
- assertThat (exporter .toString ()).isEqualTo (expectedExporter .toString ());
220
-
221
- ArgumentCaptor <DeclarativeConfigProperties > configCaptor =
222
- ArgumentCaptor .forClass (DeclarativeConfigProperties .class );
223
- ComponentProvider componentProvider =
224
- getComponentProvider ("otlp_grpc" , LogRecordExporter .class );
225
- verify (componentProvider ).create (configCaptor .capture ());
226
- DeclarativeConfigProperties configProperties = configCaptor .getValue ();
188
+ // Verify the configuration passed to the component provider
189
+ DeclarativeConfigProperties configProperties =
190
+ capturingComponentLoader .getCapturedConfig ("otlp_grpc" );
191
+ assertThat (configProperties ).isNotNull ();
227
192
assertThat (configProperties .getString ("endpoint" )).isNull ();
228
193
assertThat (configProperties .getStructured ("headers" )).isNull ();
229
194
assertThat (configProperties .getString ("compression" )).isNull ();
@@ -244,6 +209,7 @@ void create_OtlpGrpcConfigured(@TempDir Path tempDir)
244
209
.addHeader ("key2" , "value2" )
245
210
.setTimeout (Duration .ofSeconds (15 ))
246
211
.setCompression ("gzip" )
212
+ .setComponentLoader (capturingComponentLoader ) // needed for the toString() check to pass
247
213
.build ();
248
214
cleanup .addCloseable (expectedExporter );
249
215
@@ -283,12 +249,10 @@ void create_OtlpGrpcConfigured(@TempDir Path tempDir)
283
249
284
250
assertThat (exporter .toString ()).isEqualTo (expectedExporter .toString ());
285
251
286
- ArgumentCaptor <DeclarativeConfigProperties > configCaptor =
287
- ArgumentCaptor .forClass (DeclarativeConfigProperties .class );
288
- ComponentProvider componentProvider =
289
- getComponentProvider ("otlp_grpc" , LogRecordExporter .class );
290
- verify (componentProvider ).create (configCaptor .capture ());
291
- DeclarativeConfigProperties configProperties = configCaptor .getValue ();
252
+ // Verify the configuration passed to the component provider
253
+ DeclarativeConfigProperties configProperties =
254
+ capturingComponentLoader .getCapturedConfig ("otlp_grpc" );
255
+ assertThat (configProperties ).isNotNull ();
292
256
assertThat (configProperties .getString ("endpoint" )).isEqualTo ("http://example:4317" );
293
257
List <DeclarativeConfigProperties > headers = configProperties .getStructuredList ("headers" );
294
258
assertThat (headers )
@@ -327,11 +291,10 @@ void create_OtlpFile() {
327
291
328
292
assertThat (exporter .toString ()).isEqualTo (expectedExporter .toString ());
329
293
330
- ArgumentCaptor <DeclarativeConfigProperties > configCaptor =
331
- ArgumentCaptor .forClass (DeclarativeConfigProperties .class );
332
- ComponentProvider componentProvider =
333
- getComponentProvider ("otlp_file/development" , LogRecordExporter .class );
334
- verify (componentProvider ).create (configCaptor .capture ());
294
+ // Verify the configuration passed to the component provider
295
+ DeclarativeConfigProperties configProperties =
296
+ capturingComponentLoader .getCapturedConfig ("otlp_file/development" );
297
+ assertThat (configProperties ).isNotNull ();
335
298
}
336
299
337
300
@ Test
0 commit comments