5353import org .junit .jupiter .api .extension .RegisterExtension ;
5454
5555@ SuppressWarnings ("InterruptedExceptionSwallowed" )
56- class FullConfigTest {
56+ public class FullConfigTest {
5757
5858 private static final BlockingQueue <ExportTraceServiceRequest > otlpTraceRequests =
5959 new LinkedBlockingDeque <>();
@@ -193,7 +193,6 @@ void configures() throws Exception {
193193 .spanBuilder ("test" )
194194 .startSpan ()
195195 .setAttribute ("cat" , "meow" )
196- .setAttribute ("dog" , "bark" )
197196 .end ();
198197
199198 Meter meter = GlobalOpenTelemetry .get ().getMeter ("test" );
@@ -209,7 +208,6 @@ void configures() throws Exception {
209208
210209 EventLogger eventLogger = GlobalEventLoggerProvider .get ().eventLoggerBuilder ("test" ).build ();
211210 eventLogger .builder ("namespace.test-name" ).put ("cow" , "moo" ).emit ();
212- ;
213211
214212 openTelemetrySdk .getSdkTracerProvider ().forceFlush ().join (10 , TimeUnit .SECONDS );
215213 openTelemetrySdk .getSdkLoggerProvider ().forceFlush ().join (10 , TimeUnit .SECONDS );
@@ -218,37 +216,19 @@ void configures() throws Exception {
218216 await ().untilAsserted (() -> assertThat (otlpTraceRequests ).hasSize (1 ));
219217
220218 ExportTraceServiceRequest traceRequest = otlpTraceRequests .take ();
221- assertThat (traceRequest .getResourceSpans (0 ).getResource ().getAttributesList ())
222- .contains (
223- KeyValue .newBuilder ()
224- .setKey ("service.name" )
225- .setValue (AnyValue .newBuilder ().setStringValue ("test" ).build ())
226- .build (),
227- KeyValue .newBuilder ()
228- .setKey ("cat" )
229- .setValue (AnyValue .newBuilder ().setStringValue ("meow" ).build ())
230- .build ());
219+ List <KeyValue > spanResourceAttributes =
220+ traceRequest .getResourceSpans (0 ).getResource ().getAttributesList ();
221+ assertHasKeyValue (spanResourceAttributes , "service.name" , "test" );
222+ assertHasKeyValue (spanResourceAttributes , "cat" , "meow" );
231223 io .opentelemetry .proto .trace .v1 .Span span =
232224 traceRequest .getResourceSpans (0 ).getScopeSpans (0 ).getSpans (0 );
233- // Dog dropped by attribute limit.
234- assertThat (span .getAttributesList ())
235- .containsExactlyInAnyOrder (
236- KeyValue .newBuilder ()
237- .setKey ("configured" )
238- .setValue (AnyValue .newBuilder ().setBoolValue (true ).build ())
239- .build (),
240- KeyValue .newBuilder ()
241- .setKey ("wrapped" )
242- .setValue (AnyValue .newBuilder ().setIntValue (1 ).build ())
243- .build (),
244- KeyValue .newBuilder ()
245- .setKey ("cat" )
246- .setValue (AnyValue .newBuilder ().setStringValue ("meow" ).build ())
247- .build ());
225+ assertHasKeyValue (span .getAttributesList (), "configured" , true );
226+ assertHasKeyValue (span .getAttributesList (), "wrapped" , 1 );
227+ assertHasKeyValue (span .getAttributesList (), "cat" , "meow" );
228+ assertHasKeyValue (span .getAttributesList (), "extra-key" , "extra-value" );
248229
249230 // await on assertions since metrics may come in different order for BatchSpanProcessor,
250- // exporter, or the ones we
251- // created in the test.
231+ // exporter, or the ones we created in the test.
252232 await ()
253233 .untilAsserted (
254234 () -> {
@@ -257,16 +237,10 @@ void configures() throws Exception {
257237 assertThat (metricRequest .getResourceMetricsList ())
258238 .satisfiesExactly (
259239 resourceMetrics -> {
260- assertThat (resourceMetrics .getResource ().getAttributesList ())
261- .contains (
262- KeyValue .newBuilder ()
263- .setKey ("service.name" )
264- .setValue (AnyValue .newBuilder ().setStringValue ("test" ).build ())
265- .build (),
266- KeyValue .newBuilder ()
267- .setKey ("cat" )
268- .setValue (AnyValue .newBuilder ().setStringValue ("meow" ).build ())
269- .build ());
240+ List <KeyValue > metricResourceAttributes =
241+ resourceMetrics .getResource ().getAttributesList ();
242+ assertHasKeyValue (metricResourceAttributes , "service.name" , "test" );
243+ assertHasKeyValue (metricResourceAttributes , "cat" , "meow" );
270244 assertThat (resourceMetrics .getScopeMetricsList ())
271245 .anySatisfy (
272246 scopeMetrics -> {
@@ -277,18 +251,10 @@ void configures() throws Exception {
277251 // SPI was loaded
278252 assertThat (metric .getName ()).isEqualTo ("my-metric" );
279253 // TestMeterProviderConfigurer configures a view that
280- // only passes on attribute
281- // named allowed
254+ // only passes an attribute named "allowed"
282255 // configured-test
283- assertThat (getFirstDataPointLabels (metric ))
284- .contains (
285- KeyValue .newBuilder ()
286- .setKey ("allowed" )
287- .setValue (
288- AnyValue .newBuilder ()
289- .setStringValue ("bear" )
290- .build ())
291- .build ());
256+ assertHasKeyValue (
257+ getFirstDataPointLabels (metric ), "allowed" , "bear" );
292258 });
293259 })
294260 // This verifies that AutoConfigureListener was invoked and the OTLP
@@ -312,21 +278,20 @@ void configures() throws Exception {
312278
313279 await ().untilAsserted (() -> assertThat (otlpLogsRequests ).hasSize (1 ));
314280 ExportLogsServiceRequest logRequest = otlpLogsRequests .take ();
315- assertThat (logRequest .getResourceLogs (0 ).getResource ().getAttributesList ())
316- .contains (
317- KeyValue .newBuilder ()
318- .setKey ("service.name" )
319- .setValue (AnyValue .newBuilder ().setStringValue ("test" ).build ())
320- .build (),
321- KeyValue .newBuilder ()
322- .setKey ("cat" )
323- .setValue (AnyValue .newBuilder ().setStringValue ("meow" ).build ())
324- .build ());
281+ List <KeyValue > logResourceAttributes =
282+ logRequest .getResourceLogs (0 ).getResource ().getAttributesList ();
283+ assertHasKeyValue (logResourceAttributes , "service.name" , "test" );
284+ assertHasKeyValue (logResourceAttributes , "cat" , "meow" );
325285
326286 assertThat (logRequest .getResourceLogs (0 ).getScopeLogs (0 ).getLogRecordsList ())
287+ // LogRecordCustomizer customizes BatchLogProcessor to add an extra attribute on every log
288+ // record
289+ .allSatisfy (
290+ logRecord ->
291+ assertHasKeyValue (logRecord .getAttributesList (), "extra-key" , "extra-value" ))
327292 .satisfiesExactlyInAnyOrder (
328293 logRecord -> {
329- // LogRecordExporterCustomizer filters logs not whose level is less than Severity.INFO
294+ // LogRecordCustomizer filters logs not whose level is less than Severity.INFO
330295 assertThat (logRecord .getBody ().getStringValue ()).isEqualTo ("info log message" );
331296 assertThat (logRecord .getSeverityNumberValue ())
332297 .isEqualTo (Severity .INFO .getSeverityNumber ());
@@ -340,16 +305,37 @@ void configures() throws Exception {
340305 .build ());
341306 assertThat (logRecord .getSeverityNumber ())
342307 .isEqualTo (SeverityNumber .SEVERITY_NUMBER_INFO );
343- assertThat (logRecord .getAttributesList ())
344- .containsExactlyInAnyOrder (
345- KeyValue .newBuilder ()
346- .setKey ("event.name" )
347- .setValue (
348- AnyValue .newBuilder ().setStringValue ("namespace.test-name" ).build ())
349- .build ());
308+ assertHasKeyValue (logRecord .getAttributesList (), "event.name" , "namespace.test-name" );
350309 });
351310 }
352311
312+ private static void assertHasKeyValue (List <KeyValue > keyValues , String key , boolean value ) {
313+ assertThat (keyValues )
314+ .contains (
315+ KeyValue .newBuilder ()
316+ .setKey (key )
317+ .setValue (AnyValue .newBuilder ().setBoolValue (value ))
318+ .build ());
319+ }
320+
321+ private static void assertHasKeyValue (List <KeyValue > keyValues , String key , long value ) {
322+ assertThat (keyValues )
323+ .contains (
324+ KeyValue .newBuilder ()
325+ .setKey (key )
326+ .setValue (AnyValue .newBuilder ().setIntValue (value ))
327+ .build ());
328+ }
329+
330+ private static void assertHasKeyValue (List <KeyValue > keyValues , String key , String value ) {
331+ assertThat (keyValues )
332+ .contains (
333+ KeyValue .newBuilder ()
334+ .setKey (key )
335+ .setValue (AnyValue .newBuilder ().setStringValue (value ))
336+ .build ());
337+ }
338+
353339 private static List <KeyValue > getFirstDataPointLabels (Metric metric ) {
354340 switch (metric .getDataCase ()) {
355341 case GAUGE :
0 commit comments