88import static io .opentelemetry .sdk .extension .incubator .fileconfig .FileConfigTestUtil .createTempFileWithContent ;
99import static org .assertj .core .api .Assertions .assertThat ;
1010import 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 ;
1411
1512import com .google .common .collect .ImmutableMap ;
1613import com .linecorp .armeria .testing .junit5 .server .SelfSignedCertificateExtension ;
3633import java .time .Duration ;
3734import java .util .ArrayList ;
3835import java .util .Arrays ;
39- import java .util .Collections ;
4036import java .util .List ;
41- import java .util .stream .Collectors ;
4237import org .junit .jupiter .api .BeforeEach ;
4338import org .junit .jupiter .api .Test ;
44- import org .junit .jupiter .api .extension .ExtendWith ;
4539import org .junit .jupiter .api .extension .RegisterExtension ;
4640import 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 )
41+
5542class LogRecordExporterFactoryTest {
5643
5744 @ RegisterExtension
@@ -62,33 +49,15 @@ class LogRecordExporterFactoryTest {
6249
6350 @ RegisterExtension CleanupExtension cleanup = new CleanupExtension ();
6451
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 ();
52+ private CapturingComponentLoader capturingComponentLoader ;
53+ private SpiHelper spiHelper ;
54+ private DeclarativeConfigContext context ;
6955
7056 @ BeforeEach
71- @ SuppressWarnings ("unchecked" )
7257 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 );
58+ capturingComponentLoader = new CapturingComponentLoader (LogRecordExporterFactoryTest .class );
59+ spiHelper = SpiHelper .create (capturingComponentLoader );
60+ context = new DeclarativeConfigContext (spiHelper );
9261 }
9362
9463 @ Test
@@ -106,14 +75,10 @@ void create_OtlpHttpDefaults() {
10675
10776 assertThat (exporter .toString ()).isEqualTo (expectedExporter .toString ());
10877
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 ();
78+ // Verify the configuration passed to the component provider
79+ DeclarativeConfigProperties configProperties =
80+ capturingComponentLoader .getCapturedConfig (ComponentProvider .class , "otlp_http" );
81+ assertThat (configProperties ).isNotNull ();
11782 assertThat (configProperties .getString ("protocol" )).isNull ();
11883 assertThat (configProperties .getString ("endpoint" )).isNull ();
11984 assertThat (configProperties .getStructured ("headers" )).isNull ();
@@ -174,12 +139,10 @@ void create_OtlpHttpConfigured(@TempDir Path tempDir)
174139
175140 assertThat (exporter .toString ()).isEqualTo (expectedExporter .toString ());
176141
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 ();
142+ // Verify the configuration passed to the component provider
143+ DeclarativeConfigProperties configProperties =
144+ capturingComponentLoader .getCapturedConfig (ComponentProvider .class , "otlp_http" );
145+ assertThat (configProperties ).isNotNull ();
183146 assertThat (configProperties .getString ("endpoint" )).isEqualTo ("http://example:4318/v1/logs" );
184147 List <DeclarativeConfigProperties > headers = configProperties .getStructuredList ("headers" );
185148 assertThat (headers )
@@ -216,14 +179,10 @@ void create_OtlpGrpcDefaults() {
216179
217180 assertThat (exporter .toString ()).isEqualTo (expectedExporter .toString ());
218181
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 ();
182+ // Verify the configuration passed to the component provider
183+ DeclarativeConfigProperties configProperties =
184+ capturingComponentLoader .getCapturedConfig (ComponentProvider .class , "otlp_grpc" );
185+ assertThat (configProperties ).isNotNull ();
227186 assertThat (configProperties .getString ("endpoint" )).isNull ();
228187 assertThat (configProperties .getStructured ("headers" )).isNull ();
229188 assertThat (configProperties .getString ("compression" )).isNull ();
@@ -283,12 +242,10 @@ void create_OtlpGrpcConfigured(@TempDir Path tempDir)
283242
284243 assertThat (exporter .toString ()).isEqualTo (expectedExporter .toString ());
285244
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 ();
245+ // Verify the configuration passed to the component provider
246+ DeclarativeConfigProperties configProperties =
247+ capturingComponentLoader .getCapturedConfig (ComponentProvider .class , "otlp_grpc" );
248+ assertThat (configProperties ).isNotNull ();
292249 assertThat (configProperties .getString ("endpoint" )).isEqualTo ("http://example:4317" );
293250 List <DeclarativeConfigProperties > headers = configProperties .getStructuredList ("headers" );
294251 assertThat (headers )
@@ -327,11 +284,10 @@ void create_OtlpFile() {
327284
328285 assertThat (exporter .toString ()).isEqualTo (expectedExporter .toString ());
329286
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 ());
287+ // Verify the configuration passed to the component provider
288+ DeclarativeConfigProperties configProperties =
289+ capturingComponentLoader .getCapturedConfig (ComponentProvider .class , "otlp_file/development" );
290+ assertThat (configProperties ).isNotNull ();
335291 }
336292
337293 @ Test
0 commit comments