From a3d5a8569c815824720b8d7eaa23ea08806627c8 Mon Sep 17 00:00:00 2001 From: gruebel Date: Fri, 28 Feb 2025 20:10:49 +0100 Subject: [PATCH 1/2] fix and enable doctests --- opentelemetry-appender-log/src/lib.rs | 12 ++++++------ opentelemetry-otlp/src/exporter/http/mod.rs | 4 ++-- .../proto/tonic/opentelemetry.proto.trace.v1.rs | 4 ++-- opentelemetry-sdk/src/lib.rs | 2 +- opentelemetry-sdk/src/logs/batch_log_processor.rs | 4 ++-- opentelemetry-sdk/src/logs/in_memory_exporter.rs | 8 ++++---- opentelemetry-sdk/src/logs/simple_log_processor.rs | 4 ++-- opentelemetry-sdk/src/trace/in_memory_exporter.rs | 11 ++++------- opentelemetry-sdk/src/trace/provider.rs | 14 ++++++-------- opentelemetry-sdk/src/trace/span_processor.rs | 4 ++-- .../src/trace/span_processor_with_async_runtime.rs | 2 +- .../scripts/templates/registry/rust/resource.rs.j2 | 6 +++--- opentelemetry-semantic-conventions/src/resource.rs | 6 +++--- opentelemetry-stdout/src/lib.rs | 12 ++++++------ opentelemetry-zipkin/src/lib.rs | 10 +++++----- scripts/test.sh | 3 +++ 16 files changed, 52 insertions(+), 54 deletions(-) diff --git a/opentelemetry-appender-log/src/lib.rs b/opentelemetry-appender-log/src/lib.rs index 17cef6f55b..0ff3ecb357 100644 --- a/opentelemetry-appender-log/src/lib.rs +++ b/opentelemetry-appender-log/src/lib.rs @@ -12,12 +12,12 @@ //! //! ``` //! # #[tokio::main] async fn main() { -//! # use opentelemetry_sdk::logs::{BatchLogProcessor, LoggerProvider}; +//! # use opentelemetry_sdk::logs::{BatchLogProcessor, SdkLoggerProvider}; //! # use opentelemetry_sdk::runtime; //! let exporter = opentelemetry_stdout::LogExporter::default(); //! -//! let logger_provider = LoggerProvider::builder() -//! .with_log_processor(BatchLogProcessor::builder(exporter, runtime::Tokio).build()) +//! let logger_provider = SdkLoggerProvider::builder() +//! .with_log_processor(BatchLogProcessor::builder(exporter).build()) //! .build(); //! # } //! ``` @@ -26,12 +26,12 @@ //! //! ``` //! # #[tokio::main] async fn main() { -//! # use opentelemetry_sdk::logs::{BatchLogProcessor, LoggerProvider}; +//! # use opentelemetry_sdk::logs::{BatchLogProcessor, SdkLoggerProvider}; //! # use opentelemetry_sdk::runtime; //! # use opentelemetry_appender_log::OpenTelemetryLogBridge; //! # let exporter = opentelemetry_stdout::LogExporter::default(); -//! # let logger_provider = LoggerProvider::builder() -//! # .with_log_processor(BatchLogProcessor::builder(exporter, runtime::Tokio).build()) +//! # let logger_provider = SdkLoggerProvider::builder() +//! # .with_log_processor(BatchLogProcessor::builder(exporter).build()) //! # .build(); //! let otel_log_appender = OpenTelemetryLogBridge::new(&logger_provider); //! diff --git a/opentelemetry-otlp/src/exporter/http/mod.rs b/opentelemetry-otlp/src/exporter/http/mod.rs index 537d41d108..b70fecfeb5 100644 --- a/opentelemetry-otlp/src/exporter/http/mod.rs +++ b/opentelemetry-otlp/src/exporter/http/mod.rs @@ -57,12 +57,12 @@ pub struct HttpConfig { /// /// ## Examples /// -/// ``` +/// ```no_run /// # #[cfg(feature="metrics")] /// use opentelemetry_sdk::metrics::Temporality; /// /// # fn main() -> Result<(), Box> { -/// // Create a span exporter you can use to when configuring tracer providers +/// // Create a span exporter you can use when configuring tracer providers /// # #[cfg(feature="trace")] /// let span_exporter = opentelemetry_otlp::SpanExporter::builder().with_http().build()?; /// diff --git a/opentelemetry-proto/src/proto/tonic/opentelemetry.proto.trace.v1.rs b/opentelemetry-proto/src/proto/tonic/opentelemetry.proto.trace.v1.rs index 2e37483e94..8ac684e6f6 100644 --- a/opentelemetry-proto/src/proto/tonic/opentelemetry.proto.trace.v1.rs +++ b/opentelemetry-proto/src/proto/tonic/opentelemetry.proto.trace.v1.rs @@ -196,12 +196,12 @@ pub struct Span { pub end_time_unix_nano: u64, /// attributes is a collection of key/value pairs. Note, global attributes /// like server name can be set using the resource API. Examples of attributes: - /// + /// ```ignore /// "/http/user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36" /// "/http/server_latency": 300 /// "example.com/myattribute": true /// "example.com/score": 10.239 - /// + /// ``` /// The OpenTelemetry API specification further restricts the allowed value types: /// /// Attribute keys MUST be unique (it is not allowed to have more than one diff --git a/opentelemetry-sdk/src/lib.rs b/opentelemetry-sdk/src/lib.rs index b51e8f8ea4..127f9e9094 100644 --- a/opentelemetry-sdk/src/lib.rs +++ b/opentelemetry-sdk/src/lib.rs @@ -20,7 +20,7 @@ //! let exporter = new_exporter(); //! //! // Create a new trace pipeline that prints to stdout -//! let provider = TracerProvider::builder() +//! let provider = SdkTracerProvider::builder() //! .with_simple_exporter(exporter) //! .build(); //! let tracer = provider.tracer("readme_example"); diff --git a/opentelemetry-sdk/src/logs/batch_log_processor.rs b/opentelemetry-sdk/src/logs/batch_log_processor.rs index cb475a7574..4ab88782c7 100644 --- a/opentelemetry-sdk/src/logs/batch_log_processor.rs +++ b/opentelemetry-sdk/src/logs/batch_log_processor.rs @@ -107,7 +107,7 @@ type LogsData = Box<(SdkLogRecord, InstrumentationScope)>; /// ### Using a BatchLogProcessor: /// /// ```rust -/// use opentelemetry_sdk::logs::{BatchLogProcessor, BatchConfigBuilder, LoggerProvider}; +/// use opentelemetry_sdk::logs::{BatchLogProcessor, BatchConfigBuilder, SdkLoggerProvider}; /// use opentelemetry::global; /// use std::time::Duration; /// use opentelemetry_sdk::logs::InMemoryLogExporter; @@ -123,7 +123,7 @@ type LogsData = Box<(SdkLogRecord, InstrumentationScope)>; /// ) /// .build(); /// -/// let provider = LoggerProvider::builder() +/// let provider = SdkLoggerProvider::builder() /// .with_log_processor(processor) /// .build(); /// diff --git a/opentelemetry-sdk/src/logs/in_memory_exporter.rs b/opentelemetry-sdk/src/logs/in_memory_exporter.rs index d066aa4654..0a0c4ee593 100644 --- a/opentelemetry-sdk/src/logs/in_memory_exporter.rs +++ b/opentelemetry-sdk/src/logs/in_memory_exporter.rs @@ -17,7 +17,7 @@ type LogResult = Result; /// /// # Example /// ```no_run -///# use opentelemetry_sdk::logs::{BatchLogProcessor, LoggerProvider}; +///# use opentelemetry_sdk::logs::{BatchLogProcessor, SdkLoggerProvider}; ///# use opentelemetry_sdk::runtime; ///# use opentelemetry_sdk::logs::InMemoryLogExporter; /// @@ -26,7 +26,7 @@ type LogResult = Result; /// // Create an InMemoryLogExporter /// let exporter: InMemoryLogExporter = InMemoryLogExporter::default(); /// //Create a LoggerProvider and register the exporter -/// let logger_provider = LoggerProvider::builder() +/// let logger_provider = SdkLoggerProvider::builder() /// .with_log_processor(BatchLogProcessor::builder(exporter.clone()).build()) /// .build(); /// // Setup Log Appenders and emit logs. (Not shown here) @@ -78,7 +78,7 @@ pub struct LogDataWithResource { /// /// ```no_run ///# use opentelemetry_sdk::logs::{InMemoryLogExporter, InMemoryLogExporterBuilder}; -///# use opentelemetry_sdk::logs::{BatchLogProcessor, LoggerProvider}; +///# use opentelemetry_sdk::logs::{BatchLogProcessor, SdkLoggerProvider}; ///# use opentelemetry_sdk::runtime; /// ///# #[tokio::main] @@ -86,7 +86,7 @@ pub struct LogDataWithResource { /// //Create an InMemoryLogExporter /// let exporter: InMemoryLogExporter = InMemoryLogExporterBuilder::default().build(); /// //Create a LoggerProvider and register the exporter -/// let logger_provider = LoggerProvider::builder() +/// let logger_provider = SdkLoggerProvider::builder() /// .with_log_processor(BatchLogProcessor::builder(exporter.clone()).build()) /// .build(); /// // Setup Log Appenders and emit logs. (Not shown here) diff --git a/opentelemetry-sdk/src/logs/simple_log_processor.rs b/opentelemetry-sdk/src/logs/simple_log_processor.rs index 9a2fada3dc..f4b57ccc5f 100644 --- a/opentelemetry-sdk/src/logs/simple_log_processor.rs +++ b/opentelemetry-sdk/src/logs/simple_log_processor.rs @@ -47,12 +47,12 @@ use std::sync::Mutex; /// ### Using a SimpleLogProcessor /// /// ```rust -/// use opentelemetry_sdk::logs::{SimpleLogProcessor, LoggerProvider, LogExporter}; +/// use opentelemetry_sdk::logs::{SimpleLogProcessor, SdkLoggerProvider, LogExporter}; /// use opentelemetry::global; /// use opentelemetry_sdk::logs::InMemoryLogExporter; /// /// let exporter = InMemoryLogExporter::default(); // Replace with an actual exporter -/// let provider = LoggerProvider::builder() +/// let provider = SdkLoggerProvider::builder() /// .with_simple_exporter(exporter) /// .build(); /// diff --git a/opentelemetry-sdk/src/trace/in_memory_exporter.rs b/opentelemetry-sdk/src/trace/in_memory_exporter.rs index fc22bd0038..9f4f38bb4b 100644 --- a/opentelemetry-sdk/src/trace/in_memory_exporter.rs +++ b/opentelemetry-sdk/src/trace/in_memory_exporter.rs @@ -16,12 +16,12 @@ use std::sync::{Arc, Mutex}; ///# use opentelemetry_sdk::propagation::TraceContextPropagator; ///# use opentelemetry_sdk::runtime; ///# use opentelemetry_sdk::trace::InMemorySpanExporterBuilder; -///# use opentelemetry_sdk::trace::{BatchSpanProcessor, TracerProvider}; +///# use opentelemetry_sdk::trace::{BatchSpanProcessor, SdkTracerProvider}; /// ///# #[tokio::main] ///# async fn main() { /// let exporter = InMemorySpanExporterBuilder::new().build(); -/// let provider = TracerProvider::builder() +/// let provider = SdkTracerProvider::builder() /// .with_span_processor(BatchSpanProcessor::builder(exporter.clone()).build()) /// .build(); /// @@ -37,11 +37,8 @@ use std::sync::{Arc, Mutex}; /// cx.span().add_event("handling this...", Vec::new()); /// cx.span().end(); /// -/// let results = provider.force_flush(); -/// for result in results { -/// if let Err(e) = result { -/// println!("{:?}", e) -/// } +/// if let Err(e) = provider.force_flush() { +/// println!("{:?}", e) /// } /// let spans = exporter.get_finished_spans().unwrap(); /// for span in spans { diff --git a/opentelemetry-sdk/src/trace/provider.rs b/opentelemetry-sdk/src/trace/provider.rs index 6951b6dbd5..6d0e01fe9a 100644 --- a/opentelemetry-sdk/src/trace/provider.rs +++ b/opentelemetry-sdk/src/trace/provider.rs @@ -39,8 +39,8 @@ use crate::error::{OTelSdkError, OTelSdkResult}; /// use opentelemetry_sdk::trace::SdkTracerProvider; /// use opentelemetry::trace::Tracer; /// -/// fn init_tracing() -> TracerProvider { -/// let provider = TracerProvider::default(); +/// fn init_tracing() -> SdkTracerProvider { +/// let provider = SdkTracerProvider::default(); /// /// // Set the provider to be used globally /// let _ = global::set_tracer_provider(provider.clone()); @@ -198,8 +198,8 @@ impl SdkTracerProvider { /// use opentelemetry::global; /// use opentelemetry_sdk::trace::SdkTracerProvider; /// - /// fn init_tracing() -> TracerProvider { - /// let provider = TracerProvider::default(); + /// fn init_tracing() -> SdkTracerProvider { + /// let provider = SdkTracerProvider::default(); /// /// // Set provider to be used as global tracer provider /// let _ = global::set_tracer_provider(provider.clone()); @@ -213,10 +213,8 @@ impl SdkTracerProvider { /// // create spans.. /// /// // force all spans to flush - /// for result in provider.force_flush() { - /// if let Err(err) = result { - /// // .. handle flush error - /// } + /// if let Err(err) = provider.force_flush() { + /// // .. handle flush error /// } /// /// // create more spans.. diff --git a/opentelemetry-sdk/src/trace/span_processor.rs b/opentelemetry-sdk/src/trace/span_processor.rs index 8e70e8b220..b15db77763 100644 --- a/opentelemetry-sdk/src/trace/span_processor.rs +++ b/opentelemetry-sdk/src/trace/span_processor.rs @@ -193,7 +193,7 @@ impl SpanProcessor for SimpleSpanProcessor { /// ```rust /// use opentelemetry::global; /// use opentelemetry_sdk::{ -/// trace::{BatchSpanProcessor, BatchConfigBuilder, TracerProvider}, +/// trace::{BatchSpanProcessor, BatchConfigBuilder, SdkTracerProvider}, /// runtime, /// testing::trace::NoopSpanExporter, /// }; @@ -217,7 +217,7 @@ impl SpanProcessor for SimpleSpanProcessor { /// .build(); /// /// // Step 3: Set up a TracerProvider with the configured processor. -/// let provider = TracerProvider::builder() +/// let provider = SdkTracerProvider::builder() /// .with_span_processor(batch_processor) /// .build(); /// global::set_tracer_provider(provider.clone()); diff --git a/opentelemetry-sdk/src/trace/span_processor_with_async_runtime.rs b/opentelemetry-sdk/src/trace/span_processor_with_async_runtime.rs index 62b5de3fff..dc3a7f273b 100644 --- a/opentelemetry-sdk/src/trace/span_processor_with_async_runtime.rs +++ b/opentelemetry-sdk/src/trace/span_processor_with_async_runtime.rs @@ -68,7 +68,7 @@ use std::sync::Arc; /// .build(); /// /// // Then use the `with_batch_exporter` method to have the provider export spans in batches. -/// let provider = trace::TracerProvider::builder() +/// let provider = trace::SdkTracerProvider::builder() /// .with_span_processor(batch) /// .build(); /// diff --git a/opentelemetry-semantic-conventions/scripts/templates/registry/rust/resource.rs.j2 b/opentelemetry-semantic-conventions/scripts/templates/registry/rust/resource.rs.j2 index 3ffcd91808..8189317a04 100644 --- a/opentelemetry-semantic-conventions/scripts/templates/registry/rust/resource.rs.j2 +++ b/opentelemetry-semantic-conventions/scripts/templates/registry/rust/resource.rs.j2 @@ -16,11 +16,11 @@ //! //! ```rust //! use opentelemetry::KeyValue; -//! use opentelemetry_sdk::{trace::{config, TracerProvider}, Resource}; +//! use opentelemetry_sdk::{trace::{config, SdkTracerProvider}, Resource}; //! use opentelemetry_semantic_conventions as semconv; //! -//! let _tracer = TracerProvider::builder() -//! .with_config(config().with_resource(Resource::builder_empty().with_service_name("my-service").build())) +//! let _tracer = SdkTracerProvider::builder() +//! .with_resource(Resource::builder_empty().with_service_name("my-service").build()) //! .build(); //! ``` diff --git a/opentelemetry-semantic-conventions/src/resource.rs b/opentelemetry-semantic-conventions/src/resource.rs index 170f5b10ea..6fd093e3da 100644 --- a/opentelemetry-semantic-conventions/src/resource.rs +++ b/opentelemetry-semantic-conventions/src/resource.rs @@ -15,11 +15,11 @@ //! //! ```rust //! use opentelemetry::KeyValue; -//! use opentelemetry_sdk::{trace::{config, TracerProvider}, Resource}; +//! use opentelemetry_sdk::{trace::{config, SdkTracerProvider}, Resource}; //! use opentelemetry_semantic_conventions as semconv; //! -//! let _tracer = TracerProvider::builder() -//! .with_config(config().with_resource(Resource::builder_empty().with_service_name("my-service").build())) +//! let _tracer = SdkTracerProvider::builder() +//! .with_resource(Resource::builder_empty().with_service_name("my-service").build()) //! .build(); //! ``` diff --git a/opentelemetry-stdout/src/lib.rs b/opentelemetry-stdout/src/lib.rs index e9fd22a132..e48f45198b 100644 --- a/opentelemetry-stdout/src/lib.rs +++ b/opentelemetry-stdout/src/lib.rs @@ -17,17 +17,17 @@ //! # #[cfg(all(feature = "metrics", feature = "trace", feature = "logs"))] //! { //! use opentelemetry::metrics::MeterProvider; -//! use opentelemetry::trace::{Span, Tracer, TracerProvider}; +//! use opentelemetry::trace::{Span, Tracer}; //! use opentelemetry::{Context, KeyValue}; //! //! use opentelemetry_sdk::metrics::{SdkMeterProvider, PeriodicReader}; //! use opentelemetry_sdk::trace::SdkTracerProvider; //! -//! use opentelemetry_sdk::logs::LoggerProvider; +//! use opentelemetry_sdk::logs::SdkLoggerProvider; //! -//! fn init_trace() -> TracerProvider { +//! fn init_trace() -> SdkTracerProvider { //! let exporter = opentelemetry_stdout::SpanExporter::default(); -//! TracerProvider::builder() +//! SdkTracerProvider::builder() //! .with_simple_exporter(exporter) //! .build() //! } @@ -37,9 +37,9 @@ //! SdkMeterProvider::builder().with_periodic_exporter(exporter).build() //! } //! -//! fn init_logs() -> LoggerProvider { +//! fn init_logs() -> SdkLoggerProvider { //! let exporter = opentelemetry_stdout::LogExporter::default(); -//! LoggerProvider::builder() +//! SdkLoggerProvider::builder() //! .with_simple_exporter(exporter) //! .build() //! } diff --git a/opentelemetry-zipkin/src/lib.rs b/opentelemetry-zipkin/src/lib.rs index 44f81d6031..47a6d75636 100644 --- a/opentelemetry-zipkin/src/lib.rs +++ b/opentelemetry-zipkin/src/lib.rs @@ -22,8 +22,8 @@ //! //! ```no_run //! use opentelemetry::global; -//! use opentelemetry::trace::{Tracer, TraceError}; -//! use opentelemetry_sdk::{trace::SdkTracerProvider, Resource}; +//! use opentelemetry::trace::Tracer; +//! use opentelemetry_sdk::{trace::{SdkTracerProvider, TraceError}, Resource}; //! use opentelemetry_zipkin::ZipkinExporter; //! //! fn main() -> Result<(), TraceError> { @@ -70,7 +70,7 @@ //! }; //! use opentelemetry_zipkin::ZipkinExporter; //! -//! fn main() -> Result<(), opentelemetry::trace::TraceError> { +//! fn main() -> Result<(), opentelemetry_sdk::trace::TraceError> { //! let exporter = ZipkinExporter::builder() //! .build()?; //! @@ -113,8 +113,8 @@ //! //! //! ```no_run -//! use opentelemetry::{global, InstrumentationScope, KeyValue, trace::{Tracer, TraceError}}; -//! use opentelemetry_sdk::{trace::{self, RandomIdGenerator, Sampler}, Resource}; +//! use opentelemetry::{global, InstrumentationScope, KeyValue, trace::Tracer}; +//! use opentelemetry_sdk::{trace::{self, RandomIdGenerator, Sampler, TraceError}, Resource}; //! use opentelemetry_http::{HttpClient, HttpError}; //! use opentelemetry_zipkin::{Error as ZipkinError, ZipkinExporter}; //! use async_trait::async_trait; diff --git a/scripts/test.sh b/scripts/test.sh index b77df21e1c..8bc787eb86 100755 --- a/scripts/test.sh +++ b/scripts/test.sh @@ -9,6 +9,9 @@ set -eu echo "Running tests for all packages in workspace with --all-features" cargo test --workspace --all-features --lib +echo "Running doctests for all packages in workspace with --all-features" +cargo test --workspace --all-features --doc + # See https://github.com/rust-lang/cargo/issues/5364 echo "Running tests for opentelemetry package with --no-default-features" cargo test --manifest-path=opentelemetry/Cargo.toml --no-default-features --lib From 0841ad2488e3dba2172bbb6ca1f30db7f0a8cbfd Mon Sep 17 00:00:00 2001 From: gruebel Date: Fri, 28 Feb 2025 21:19:34 +0100 Subject: [PATCH 2/2] exclude opentelemetry-proto --- .../src/proto/tonic/opentelemetry.proto.trace.v1.rs | 4 ++-- scripts/test.sh | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/opentelemetry-proto/src/proto/tonic/opentelemetry.proto.trace.v1.rs b/opentelemetry-proto/src/proto/tonic/opentelemetry.proto.trace.v1.rs index 8ac684e6f6..2e37483e94 100644 --- a/opentelemetry-proto/src/proto/tonic/opentelemetry.proto.trace.v1.rs +++ b/opentelemetry-proto/src/proto/tonic/opentelemetry.proto.trace.v1.rs @@ -196,12 +196,12 @@ pub struct Span { pub end_time_unix_nano: u64, /// attributes is a collection of key/value pairs. Note, global attributes /// like server name can be set using the resource API. Examples of attributes: - /// ```ignore + /// /// "/http/user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36" /// "/http/server_latency": 300 /// "example.com/myattribute": true /// "example.com/score": 10.239 - /// ``` + /// /// The OpenTelemetry API specification further restricts the allowed value types: /// /// Attribute keys MUST be unique (it is not allowed to have more than one diff --git a/scripts/test.sh b/scripts/test.sh index 8bc787eb86..3eb7e65b8f 100755 --- a/scripts/test.sh +++ b/scripts/test.sh @@ -10,7 +10,7 @@ echo "Running tests for all packages in workspace with --all-features" cargo test --workspace --all-features --lib echo "Running doctests for all packages in workspace with --all-features" -cargo test --workspace --all-features --doc +cargo test --workspace --all-features --doc --exclude opentelemetry-proto # See https://github.com/rust-lang/cargo/issues/5364 echo "Running tests for opentelemetry package with --no-default-features"