32
32
import io .opentelemetry .exporter .otlp .logs .OtlpGrpcLogRecordExporterBuilder ;
33
33
import io .opentelemetry .sdk .autoconfigure .spi .ConfigProperties ;
34
34
import io .opentelemetry .sdk .logs .export .LogRecordExporter ;
35
+ import java .util .Map ;
35
36
import org .junit .jupiter .api .Test ;
36
37
37
38
class LogExporterBuilderTest {
@@ -58,12 +59,53 @@ void testBuildSimpleHttp() {
58
59
59
60
when (builder .addHeader (EXTRA_CONTENT_TYPE , STACKTRACES_HEADER_VALUE )).thenReturn (builder );
60
61
when (builder .build ()).thenReturn (expected );
62
+ when (config .getString ("otel.exporter.otlp.protocol" , "grpc" )).thenReturn ("http/protobuf" );
61
63
62
64
LogRecordExporter exporter = LogExporterBuilder .buildHttpExporter (config , () -> builder );
63
65
assertSame (expected , exporter );
64
66
verify (builder , never ()).setEndpoint (anyString ());
65
67
}
66
68
69
+ @ Test
70
+ void extraOtlpHeaders () {
71
+ ConfigProperties config = mock (ConfigProperties .class );
72
+ when (config .getMap ("otel.exporter.otlp.headers" ))
73
+ .thenReturn (Map .of ("foo" , "bar" , "bar" , "baz" ));
74
+ when (config .getMap ("otel.exporter.otlp.logs.headers" )).thenReturn (Map .of ("log" , "lady" ));
75
+ when (config .getString ("otel.exporter.otlp.protocol" , "grpc" )).thenReturn ("http/protobuf" );
76
+
77
+ OtlpHttpLogRecordExporterBuilder builder = mock (OtlpHttpLogRecordExporterBuilder .class );
78
+ OtlpHttpLogRecordExporter expected = mock (OtlpHttpLogRecordExporter .class );
79
+
80
+ when (builder .addHeader (anyString (), anyString ())).thenReturn (builder );
81
+ when (builder .build ()).thenReturn (expected );
82
+
83
+ LogRecordExporter exporter = LogExporterBuilder .buildHttpExporter (config , () -> builder );
84
+ assertSame (expected , exporter );
85
+ verify (builder ).addHeader (EXTRA_CONTENT_TYPE , STACKTRACES_HEADER_VALUE );
86
+ verify (builder ).addHeader ("log" , "lady" );
87
+ verify (builder , never ()).addHeader ("foo" , "bar" );
88
+ verify (builder , never ()).addHeader ("bar" , "baz" );
89
+ }
90
+
91
+ @ Test
92
+ void extraOtlpLogSpecificHeaders () {
93
+ ConfigProperties config = mock (ConfigProperties .class );
94
+ when (config .getMap ("otel.exporter.otlp.headers" ))
95
+ .thenReturn (Map .of ("foo" , "bar" , "bar" , "baz" ));
96
+ when (config .getString ("otel.exporter.otlp.protocol" , "grpc" )).thenReturn ("http/protobuf" );
97
+
98
+ OtlpHttpLogRecordExporterBuilder builder = mock (OtlpHttpLogRecordExporterBuilder .class );
99
+ OtlpHttpLogRecordExporter expected = mock (OtlpHttpLogRecordExporter .class );
100
+
101
+ when (builder .addHeader (anyString (), anyString ())).thenReturn (builder );
102
+ when (builder .build ()).thenReturn (expected );
103
+
104
+ LogRecordExporter exporter = LogExporterBuilder .buildHttpExporter (config , () -> builder );
105
+ assertSame (expected , exporter );
106
+ verify (builder ).addHeader (EXTRA_CONTENT_TYPE , STACKTRACES_HEADER_VALUE );
107
+ }
108
+
67
109
@ Test
68
110
void testCustomEndpointGrpc () {
69
111
String endpoint = "http://example.com:9122/" ;
@@ -105,6 +147,7 @@ void testCustomEndpointHttp() {
105
147
when (config .getString (
106
148
Configuration .CONFIG_KEY_INGEST_URL , "http://shadowed.example.com:9122/v1/logs" ))
107
149
.thenReturn (endpoint );
150
+ when (config .getString ("otel.exporter.otlp.protocol" , "grpc" )).thenReturn ("http/protobuf" );
108
151
LogRecordExporter exporter = LogExporterBuilder .buildHttpExporter (config , () -> builder );
109
152
110
153
assertNotNull (exporter );
0 commit comments