Skip to content

Commit c225c82

Browse files
lalitbTommyCppcijothomas
authored
Add OTLP integration test for hyper and request client for logs and traces (#2312)
Co-authored-by: Zhongyang Wu <[email protected]> Co-authored-by: Cijo Thomas <[email protected]>
1 parent 5b6e9b9 commit c225c82

File tree

5 files changed

+59
-7
lines changed

5 files changed

+59
-7
lines changed

opentelemetry-otlp/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,4 +83,4 @@ reqwest-rustls-webpki-roots = ["reqwest", "opentelemetry-http/reqwest-rustls-web
8383
hyper-client = ["opentelemetry-http/hyper"]
8484

8585
# test
86-
integration-testing = ["tonic", "prost", "tokio/full", "trace"]
86+
integration-testing = ["tonic", "prost", "tokio/full", "trace", "logs"]

opentelemetry-otlp/tests/integration_test/Cargo.toml

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,15 @@ testcontainers = "0.15.0"
1616

1717
[target.'cfg(unix)'.dependencies]
1818
opentelemetry-appender-log = { path = "../../../opentelemetry-appender-log", default-features = false}
19-
opentelemetry-otlp = { path = "../../../opentelemetry-otlp", features = ["tonic", "metrics", "logs"] }
19+
opentelemetry-otlp = { path = "../../../opentelemetry-otlp", default-features = false }
2020
opentelemetry-semantic-conventions = { path = "../../../opentelemetry-semantic-conventions" }
21+
22+
[features]
23+
hyper-client = ["opentelemetry-otlp/hyper-client", "opentelemetry-otlp/http-proto", "opentelemetry-otlp/trace", "opentelemetry-otlp/logs", "opentelemetry-otlp/metrics"]
24+
reqwest-client = ["opentelemetry-otlp/reqwest-client", "opentelemetry-otlp/http-proto", "opentelemetry-otlp/trace","opentelemetry-otlp/logs", "opentelemetry-otlp/metrics"]
25+
reqwest-blocking-client = ["opentelemetry-otlp/reqwest-blocking-client", "opentelemetry-otlp/http-proto", "opentelemetry-otlp/trace","opentelemetry-otlp/logs", "opentelemetry-otlp/metrics"]
26+
tonic-client = ["opentelemetry-otlp/grpc-tonic", "opentelemetry-otlp/trace", "opentelemetry-otlp/logs", "opentelemetry-otlp/metrics"]
27+
28+
# Keep tonic as the default client
29+
default = ["tonic-client"]
30+

opentelemetry-otlp/tests/integration_test/tests/logs.rs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,18 @@ use std::fs::File;
1212
use std::os::unix::fs::MetadataExt;
1313

1414
fn init_logs() -> Result<sdklogs::LoggerProvider, LogError> {
15-
let exporter = LogExporter::builder().with_tonic().build()?;
15+
let exporter_builder = LogExporter::builder();
16+
#[cfg(feature = "tonic-client")]
17+
let exporter_builder = exporter_builder.with_tonic();
18+
#[cfg(not(feature = "tonic-client"))]
19+
#[cfg(any(
20+
feature = "hyper-client",
21+
feature = "reqwest-client",
22+
feature = "reqwest-blocking-client"
23+
))]
24+
let exporter_builder = exporter_builder.with_http();
25+
26+
let exporter = exporter_builder.build()?;
1627

1728
Ok(LoggerProvider::builder()
1829
.with_batch_exporter(exporter, runtime::Tokio)

opentelemetry-otlp/tests/integration_test/tests/traces.rs

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ use opentelemetry::{
88
trace::{TraceContextExt, Tracer},
99
Key, KeyValue,
1010
};
11+
use opentelemetry_otlp::SpanExporter;
12+
1113
use opentelemetry_proto::tonic::trace::v1::TracesData;
1214
use opentelemetry_sdk::{runtime, trace as sdktrace, Resource};
1315
use std::error::Error;
@@ -16,9 +18,19 @@ use std::io::Write;
1618
use std::os::unix::fs::MetadataExt;
1719

1820
fn init_tracer_provider() -> Result<sdktrace::TracerProvider, TraceError> {
19-
let exporter = opentelemetry_otlp::SpanExporter::builder()
20-
.with_tonic()
21-
.build()?;
21+
let exporter_builder = SpanExporter::builder();
22+
#[cfg(feature = "tonic-client")]
23+
let exporter_builder = exporter_builder.with_tonic();
24+
#[cfg(not(feature = "tonic-client"))]
25+
#[cfg(any(
26+
feature = "hyper-client",
27+
feature = "reqwest-client",
28+
feature = "reqwest-blocking-client"
29+
))]
30+
let exporter_builder = exporter_builder.with_http();
31+
32+
let exporter = exporter_builder.build()?;
33+
2234
Ok(opentelemetry_sdk::trace::TracerProvider::builder()
2335
.with_batch_exporter(exporter, runtime::Tokio)
2436
.with_resource(Resource::new(vec![KeyValue::new(

scripts/integration_tests.sh

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,20 @@
1-
cd ./opentelemetry-otlp/tests/integration_test/tests && cargo test -- --ignored
1+
set -e
2+
TEST_DIR="./opentelemetry-otlp/tests/integration_test/tests"
3+
4+
if [ -d "$TEST_DIR" ]; then
5+
cd "$TEST_DIR"
6+
# Run tests with the grpc-tonic feature
7+
cargo test --no-default-features --features "tonic-client" -- --ignored
8+
9+
# Run tests with the reqwest-client feature
10+
cargo test --no-default-features --features "reqwest-client" -- --ignored
11+
12+
# TODO - Uncomment the following lines once the reqwest-blocking-client feature is working.
13+
# cargo test --no-default-features --features "reqwest-blocking-client" -- --ignored
14+
15+
# Run tests with the hyper-client feature
16+
cargo test --no-default-features --features "hyper-client" -- --ignored
17+
else
18+
echo "Directory $TEST_DIR does not exist. Skipping tests."
19+
exit 1
20+
fi

0 commit comments

Comments
 (0)