Skip to content

Commit b124b82

Browse files
committed
Add more test coverage
1 parent 5d8165b commit b124b82

File tree

14 files changed

+511
-58
lines changed

14 files changed

+511
-58
lines changed

exporters/logging-otlp/src/main/java/io/opentelemetry/exporter/logging/otlp/internal/logs/OtlpStdoutLogRecordExporterComponentProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public Class<LogRecordExporter> getType() {
2626

2727
@Override
2828
public String getName() {
29-
return "experimental-otlp/stdout";
29+
return "otlp_file/development";
3030
}
3131

3232
@Override

exporters/logging-otlp/src/main/java/io/opentelemetry/exporter/logging/otlp/internal/metrics/OtlpStdoutMetricExporterComponentProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public Class<MetricExporter> getType() {
2626

2727
@Override
2828
public String getName() {
29-
return "experimental-otlp/stdout";
29+
return "otlp_file/development";
3030
}
3131

3232
@Override

exporters/logging-otlp/src/main/java/io/opentelemetry/exporter/logging/otlp/internal/traces/OtlpStdoutSpanExporterComponentProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public Class<SpanExporter> getType() {
2626

2727
@Override
2828
public String getName() {
29-
return "experimental-otlp/stdout";
29+
return "otlp_file/development";
3030
}
3131

3232
@Override

exporters/logging-otlp/src/test/java/io/opentelemetry/exporter/logging/otlp/AbstractOtlpStdoutExporterTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -335,7 +335,7 @@ protected T exporterFromComponentProvider(DeclarativeConfigProperties properties
335335
.filter(
336336
p -> {
337337
ComponentProvider<?> c = (ComponentProvider<?>) p;
338-
return "experimental-otlp/stdout".equals(c.getName())
338+
return "otlp_file/development".equals(c.getName())
339339
&& c.getType().equals(componentProviderType);
340340
})
341341
.findFirst()

sdk-extensions/incubator/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ dependencies {
3434
testImplementation(project(":sdk:testing"))
3535
testImplementation(project(":sdk-extensions:autoconfigure"))
3636
testImplementation(project(":exporters:logging"))
37+
testImplementation(project(":exporters:logging-otlp"))
3738
testImplementation(project(":exporters:otlp:all"))
3839
testImplementation(project(":exporters:prometheus"))
3940
testImplementation(project(":exporters:zipkin"))

sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/LogRecordExporterFactory.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public LogRecordExporter create(
4242
}
4343
ExperimentalOtlpFileExporterModel otlpFileExporterModel = model.getOtlpFileDevelopment();
4444
if (otlpFileExporterModel != null) {
45-
model.getAdditionalProperties().put("otlp_file", otlpFileExporterModel);
45+
model.getAdditionalProperties().put("otlp_file/development", otlpFileExporterModel);
4646
}
4747

4848
ConsoleExporterModel consoleModel = model.getConsole();

sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/MetricExporterFactory.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public MetricExporter create(
4141
}
4242
ExperimentalOtlpFileMetricExporterModel otlpFileExporterModel = model.getOtlpFileDevelopment();
4343
if (otlpFileExporterModel != null) {
44-
model.getAdditionalProperties().put("otlp_file", otlpFileExporterModel);
44+
model.getAdditionalProperties().put("otlp_file/development", otlpFileExporterModel);
4545
}
4646

4747
if (model.getConsole() != null) {

sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/SpanExporterFactory.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public SpanExporter create(
4242
}
4343
ExperimentalOtlpFileExporterModel otlpFileExporterModel = model.getOtlpFileDevelopment();
4444
if (otlpFileExporterModel != null) {
45-
model.getAdditionalProperties().put("otlp_file", otlpFileExporterModel);
45+
model.getAdditionalProperties().put("otlp_file/development", otlpFileExporterModel);
4646
}
4747

4848
if (model.getConsole() != null) {

sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/LogRecordExporterFactoryTest.java

Lines changed: 146 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,17 @@
1616
import com.linecorp.armeria.testing.junit5.server.SelfSignedCertificateExtension;
1717
import io.opentelemetry.api.incubator.config.DeclarativeConfigException;
1818
import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties;
19+
import io.opentelemetry.exporter.logging.otlp.internal.logs.OtlpStdoutLogRecordExporter;
1920
import io.opentelemetry.exporter.otlp.http.logs.OtlpHttpLogRecordExporter;
21+
import io.opentelemetry.exporter.otlp.logs.OtlpGrpcLogRecordExporter;
2022
import io.opentelemetry.internal.testing.CleanupExtension;
2123
import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper;
2224
import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider;
2325
import io.opentelemetry.sdk.extension.incubator.fileconfig.component.LogRecordExporterComponentProvider;
26+
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ExperimentalOtlpFileExporterModel;
2427
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.LogRecordExporterModel;
2528
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.NameStringValuePairModel;
29+
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.OtlpGrpcExporterModel;
2630
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.OtlpHttpExporterModel;
2731
import io.opentelemetry.sdk.logs.export.LogRecordExporter;
2832
import java.io.Closeable;
@@ -87,17 +91,15 @@ private ComponentProvider<?> getComponentProvider(String name, Class<?> type) {
8791
}
8892

8993
@Test
90-
void create_OtlpDefaults() {
94+
void create_OtlpHttpDefaults() {
9195
List<Closeable> closeables = new ArrayList<>();
9296
OtlpHttpLogRecordExporter expectedExporter = OtlpHttpLogRecordExporter.getDefault();
9397
cleanup.addCloseable(expectedExporter);
9498

9599
LogRecordExporter exporter =
96100
LogRecordExporterFactory.getInstance()
97101
.create(
98-
new io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model
99-
.LogRecordExporterModel()
100-
.withOtlpHttp(new OtlpHttpExporterModel()),
102+
new LogRecordExporterModel().withOtlpHttp(new OtlpHttpExporterModel()),
101103
spiHelper,
102104
closeables);
103105
cleanup.addCloseable(exporter);
@@ -124,7 +126,7 @@ void create_OtlpDefaults() {
124126
}
125127

126128
@Test
127-
void create_OtlpConfigured(@TempDir Path tempDir)
129+
void create_OtlpHttpConfigured(@TempDir Path tempDir)
128130
throws CertificateEncodingException, IOException {
129131
List<Closeable> closeables = new ArrayList<>();
130132
OtlpHttpLogRecordExporter expectedExporter =
@@ -150,8 +152,7 @@ void create_OtlpConfigured(@TempDir Path tempDir)
150152
LogRecordExporter exporter =
151153
LogRecordExporterFactory.getInstance()
152154
.create(
153-
new io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model
154-
.LogRecordExporterModel()
155+
new LogRecordExporterModel()
155156
.withOtlpHttp(
156157
new OtlpHttpExporterModel()
157158
.withEndpoint("http://example:4318/v1/logs")
@@ -202,6 +203,143 @@ void create_OtlpConfigured(@TempDir Path tempDir)
202203
.isEqualTo(clientCertificatePath);
203204
}
204205

206+
@Test
207+
void create_OtlpGrpcDefaults() {
208+
List<Closeable> closeables = new ArrayList<>();
209+
OtlpGrpcLogRecordExporter expectedExporter = OtlpGrpcLogRecordExporter.getDefault();
210+
cleanup.addCloseable(expectedExporter);
211+
212+
LogRecordExporter exporter =
213+
LogRecordExporterFactory.getInstance()
214+
.create(
215+
new LogRecordExporterModel().withOtlpGrpc(new OtlpGrpcExporterModel()),
216+
spiHelper,
217+
closeables);
218+
cleanup.addCloseable(exporter);
219+
cleanup.addCloseables(closeables);
220+
221+
assertThat(exporter.toString()).isEqualTo(expectedExporter.toString());
222+
223+
assertThat(exporter.toString()).isEqualTo(expectedExporter.toString());
224+
225+
ArgumentCaptor<DeclarativeConfigProperties> configCaptor =
226+
ArgumentCaptor.forClass(DeclarativeConfigProperties.class);
227+
ComponentProvider<?> componentProvider =
228+
getComponentProvider("otlp_grpc", LogRecordExporter.class);
229+
verify(componentProvider).create(configCaptor.capture());
230+
DeclarativeConfigProperties configProperties = configCaptor.getValue();
231+
assertThat(configProperties.getString("endpoint")).isNull();
232+
assertThat(configProperties.getStructured("headers")).isNull();
233+
assertThat(configProperties.getString("compression")).isNull();
234+
assertThat(configProperties.getInt("timeout")).isNull();
235+
assertThat(configProperties.getString("certificate_file")).isNull();
236+
assertThat(configProperties.getString("client_key_file")).isNull();
237+
assertThat(configProperties.getString("client_certificate_file")).isNull();
238+
}
239+
240+
@Test
241+
void create_OtlpGrpcConfigured(@TempDir Path tempDir)
242+
throws CertificateEncodingException, IOException {
243+
List<Closeable> closeables = new ArrayList<>();
244+
OtlpGrpcLogRecordExporter expectedExporter =
245+
OtlpGrpcLogRecordExporter.builder()
246+
.setEndpoint("http://example:4317")
247+
.addHeader("key1", "value1")
248+
.addHeader("key2", "value2")
249+
.setTimeout(Duration.ofSeconds(15))
250+
.setCompression("gzip")
251+
.build();
252+
cleanup.addCloseable(expectedExporter);
253+
254+
// Write certificates to temp files
255+
String certificatePath =
256+
createTempFileWithContent(
257+
tempDir, "certificate.cert", serverTls.certificate().getEncoded());
258+
String clientKeyPath =
259+
createTempFileWithContent(tempDir, "clientKey.key", clientTls.privateKey().getEncoded());
260+
String clientCertificatePath =
261+
createTempFileWithContent(
262+
tempDir, "clientCertificate.cert", clientTls.certificate().getEncoded());
263+
264+
LogRecordExporter exporter =
265+
LogRecordExporterFactory.getInstance()
266+
.create(
267+
new LogRecordExporterModel()
268+
.withOtlpGrpc(
269+
new OtlpGrpcExporterModel()
270+
.withEndpoint("http://example:4317")
271+
.withHeaders(
272+
Arrays.asList(
273+
new NameStringValuePairModel()
274+
.withName("key1")
275+
.withValue("value1"),
276+
new NameStringValuePairModel()
277+
.withName("key2")
278+
.withValue("value2")))
279+
.withCompression("gzip")
280+
.withTimeout(15_000)
281+
.withCertificateFile(certificatePath)
282+
.withClientKeyFile(clientKeyPath)
283+
.withClientCertificateFile(clientCertificatePath)),
284+
spiHelper,
285+
closeables);
286+
cleanup.addCloseable(exporter);
287+
cleanup.addCloseables(closeables);
288+
289+
assertThat(exporter.toString()).isEqualTo(expectedExporter.toString());
290+
291+
ArgumentCaptor<DeclarativeConfigProperties> configCaptor =
292+
ArgumentCaptor.forClass(DeclarativeConfigProperties.class);
293+
ComponentProvider<?> componentProvider =
294+
getComponentProvider("otlp_grpc", LogRecordExporter.class);
295+
verify(componentProvider).create(configCaptor.capture());
296+
DeclarativeConfigProperties configProperties = configCaptor.getValue();
297+
assertThat(configProperties.getString("endpoint")).isEqualTo("http://example:4317");
298+
List<DeclarativeConfigProperties> headers = configProperties.getStructuredList("headers");
299+
assertThat(headers)
300+
.isNotNull()
301+
.satisfiesExactly(
302+
header -> {
303+
assertThat(header.getString("name")).isEqualTo("key1");
304+
assertThat(header.getString("value")).isEqualTo("value1");
305+
},
306+
header -> {
307+
assertThat(header.getString("name")).isEqualTo("key2");
308+
assertThat(header.getString("value")).isEqualTo("value2");
309+
});
310+
assertThat(configProperties.getString("compression")).isEqualTo("gzip");
311+
assertThat(configProperties.getInt("timeout")).isEqualTo(Duration.ofSeconds(15).toMillis());
312+
assertThat(configProperties.getString("certificate_file")).isEqualTo(certificatePath);
313+
assertThat(configProperties.getString("client_key_file")).isEqualTo(clientKeyPath);
314+
assertThat(configProperties.getString("client_certificate_file"))
315+
.isEqualTo(clientCertificatePath);
316+
}
317+
318+
@Test
319+
void create_OtlpFile() {
320+
List<Closeable> closeables = new ArrayList<>();
321+
OtlpStdoutLogRecordExporter expectedExporter = OtlpStdoutLogRecordExporter.builder().build();
322+
cleanup.addCloseable(expectedExporter);
323+
324+
LogRecordExporter exporter =
325+
LogRecordExporterFactory.getInstance()
326+
.create(
327+
new LogRecordExporterModel()
328+
.withOtlpFileDevelopment(new ExperimentalOtlpFileExporterModel()),
329+
spiHelper,
330+
closeables);
331+
cleanup.addCloseable(exporter);
332+
cleanup.addCloseables(closeables);
333+
334+
assertThat(exporter.toString()).isEqualTo(expectedExporter.toString());
335+
336+
ArgumentCaptor<DeclarativeConfigProperties> configCaptor =
337+
ArgumentCaptor.forClass(DeclarativeConfigProperties.class);
338+
ComponentProvider<?> componentProvider =
339+
getComponentProvider("otlp_file/development", LogRecordExporter.class);
340+
verify(componentProvider).create(configCaptor.capture());
341+
}
342+
205343
@Test
206344
void create_SpiExporter_Unknown() {
207345
List<Closeable> closeables = new ArrayList<>();
@@ -210,8 +348,7 @@ void create_SpiExporter_Unknown() {
210348
() ->
211349
LogRecordExporterFactory.getInstance()
212350
.create(
213-
new io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model
214-
.LogRecordExporterModel()
351+
new LogRecordExporterModel()
215352
.withAdditionalProperty(
216353
"unknown_key", ImmutableMap.of("key1", "value1")),
217354
spiHelper,

sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/MeterProviderFactoryTest.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,15 @@
1919
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.OtlpHttpMetricExporterModel;
2020
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.PeriodicMetricReaderModel;
2121
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.PushMetricExporterModel;
22+
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ViewModel;
2223
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ViewSelectorModel;
2324
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ViewStreamModel;
2425
import io.opentelemetry.sdk.internal.ScopeConfigurator;
2526
import io.opentelemetry.sdk.internal.ScopeConfiguratorBuilder;
2627
import io.opentelemetry.sdk.metrics.InstrumentSelector;
2728
import io.opentelemetry.sdk.metrics.SdkMeterProvider;
2829
import io.opentelemetry.sdk.metrics.View;
30+
import io.opentelemetry.sdk.metrics.export.PeriodicMetricReader;
2931
import io.opentelemetry.sdk.metrics.internal.MeterConfig;
3032
import java.io.Closeable;
3133
import java.util.ArrayList;
@@ -73,8 +75,7 @@ private static Stream<Arguments> createArguments() {
7375
.withOtlpHttp(new OtlpHttpMetricExporterModel())))))
7476
.withViews(
7577
Collections.singletonList(
76-
new io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model
77-
.ViewModel()
78+
new ViewModel()
7879
.withSelector(
7980
new ViewSelectorModel().withInstrumentName("instrument-name"))
8081
.withStream(
@@ -98,9 +99,7 @@ private static Stream<Arguments> createArguments() {
9899
ScopeConfiguratorBuilder.nameMatchesGlob("foo"), MeterConfig.enabled())
99100
.build())
100101
.registerMetricReader(
101-
io.opentelemetry.sdk.metrics.export.PeriodicMetricReader.builder(
102-
OtlpHttpMetricExporter.getDefault())
103-
.build())
102+
PeriodicMetricReader.builder(OtlpHttpMetricExporter.getDefault()).build())
104103
.registerView(
105104
InstrumentSelector.builder().setName("instrument-name").build(),
106105
View.builder().setName("stream-name").build())

0 commit comments

Comments
 (0)