diff --git a/Cargo.toml b/Cargo.toml index f9e9eb264c..717871ea14 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -36,7 +36,7 @@ pin-project-lite = "0.2" prost = "0.13" prost-build = "0.13" prost-types = "0.13" -rand = { version = "0.8", default-features = false } +rand = { version = "0.9", default-features = false } reqwest = { version = "0.12", default-features = false } serde = { version = "1.0", default-features = false } serde_json = "1.0" diff --git a/opentelemetry-sdk/Cargo.toml b/opentelemetry-sdk/Cargo.toml index dc90c89a6a..819e0b4ca2 100644 --- a/opentelemetry-sdk/Cargo.toml +++ b/opentelemetry-sdk/Cargo.toml @@ -17,7 +17,7 @@ futures-channel = "0.3" futures-executor = { workspace = true } futures-util = { workspace = true, features = ["std", "sink", "async-await-macro"] } percent-encoding = { version = "2.0", optional = true } -rand = { workspace = true, features = ["std", "std_rng","small_rng"], optional = true } +rand = { workspace = true, features = ["std", "std_rng", "small_rng", "os_rng", "thread_rng"], optional = true } glob = { version = "0.3.1", optional =true} serde = { workspace = true, features = ["derive", "rc"], optional = true } serde_json = { workspace = true, optional = true } diff --git a/opentelemetry-sdk/benches/metric.rs b/opentelemetry-sdk/benches/metric.rs index f4d0f5219a..e6eb471d37 100644 --- a/opentelemetry-sdk/benches/metric.rs +++ b/opentelemetry-sdk/benches/metric.rs @@ -301,7 +301,7 @@ fn bench_histogram(bound_count: usize) -> (SharedReader, Histogram) { fn histograms(c: &mut Criterion) { let mut group = c.benchmark_group("Histogram"); - let mut rng = rand::thread_rng(); + let mut rng = rand::rng(); for bound_size in [10, 49, 50, 1000].iter() { let (_, hist) = bench_histogram(*bound_size); @@ -313,7 +313,7 @@ fn histograms(c: &mut Criterion) { format!("V,{},{},{}", bound_size, attr_size, i), )) } - let value: u64 = rng.gen_range(0..MAX_BOUND).try_into().unwrap(); + let value: u64 = rng.random_range(0..MAX_BOUND).try_into().unwrap(); group.bench_function( format!("Record{}Attrs{}bounds", attr_size, bound_size), |b| b.iter(|| hist.record(value, &attributes)), diff --git a/opentelemetry-sdk/benches/metrics_counter.rs b/opentelemetry-sdk/benches/metrics_counter.rs index 3b6350fe5f..ae40cf5a99 100644 --- a/opentelemetry-sdk/benches/metrics_counter.rs +++ b/opentelemetry-sdk/benches/metrics_counter.rs @@ -30,7 +30,7 @@ use std::cell::RefCell; thread_local! { /// Store random number generator for each thread - static CURRENT_RNG: RefCell = RefCell::new(rngs::SmallRng::from_entropy()); + static CURRENT_RNG: RefCell = RefCell::new(rngs::SmallRng::from_os_rng()); } static ATTRIBUTE_VALUES: [&str; 10] = [ @@ -75,10 +75,10 @@ fn counter_add_sorted(c: &mut Criterion) { CURRENT_RNG.with(|rng| { let mut rng = rng.borrow_mut(); [ - rng.gen_range(0..4), - rng.gen_range(0..4), - rng.gen_range(0..10), - rng.gen_range(0..10), + rng.random_range(0..4), + rng.random_range(0..4), + rng.random_range(0..10), + rng.random_range(0..10), ] }) }, @@ -111,10 +111,10 @@ fn counter_add_unsorted(c: &mut Criterion) { CURRENT_RNG.with(|rng| { let mut rng = rng.borrow_mut(); [ - rng.gen_range(0..4), - rng.gen_range(0..4), - rng.gen_range(0..10), - rng.gen_range(0..10), + rng.random_range(0..4), + rng.random_range(0..4), + rng.random_range(0..10), + rng.random_range(0..10), ] }) }, @@ -147,10 +147,10 @@ fn counter_add_sorted_with_non_static_values(c: &mut Criterion, attribute_values CURRENT_RNG.with(|rng| { let mut rng = rng.borrow_mut(); [ - rng.gen_range(0..4), - rng.gen_range(0..4), - rng.gen_range(0..10), - rng.gen_range(0..10), + rng.random_range(0..4), + rng.random_range(0..4), + rng.random_range(0..10), + rng.random_range(0..10), ] }) }, @@ -199,10 +199,10 @@ fn counter_overflow(c: &mut Criterion) { let rands = CURRENT_RNG.with(|rng| { let mut rng = rng.borrow_mut(); [ - rng.gen_range(0..4), - rng.gen_range(0..4), - rng.gen_range(0..10), - rng.gen_range(0..10), + rng.random_range(0..4), + rng.random_range(0..4), + rng.random_range(0..10), + rng.random_range(0..10), ] }); let index_first_attribute = rands[0]; @@ -228,11 +228,11 @@ fn random_generator(c: &mut Criterion) { let __i1 = CURRENT_RNG.with(|rng| { let mut rng = rng.borrow_mut(); [ - rng.gen_range(0..4), - rng.gen_range(0..4), - rng.gen_range(0..10), - rng.gen_range(0..10), - rng.gen_range(0..10), + rng.random_range(0..4), + rng.random_range(0..4), + rng.random_range(0..10), + rng.random_range(0..10), + rng.random_range(0..10), ] }); }); diff --git a/opentelemetry-sdk/benches/metrics_gauge.rs b/opentelemetry-sdk/benches/metrics_gauge.rs index c61095e53e..362f0db9ff 100644 --- a/opentelemetry-sdk/benches/metrics_gauge.rs +++ b/opentelemetry-sdk/benches/metrics_gauge.rs @@ -24,7 +24,7 @@ use std::cell::RefCell; thread_local! { /// Store random number generator for each thread - static CURRENT_RNG: RefCell = RefCell::new(rngs::SmallRng::from_entropy()); + static CURRENT_RNG: RefCell = RefCell::new(rngs::SmallRng::from_os_rng()); } static ATTRIBUTE_VALUES: [&str; 10] = [ @@ -55,10 +55,10 @@ fn gauge_record(c: &mut Criterion) { let rands = CURRENT_RNG.with(|rng| { let mut rng = rng.borrow_mut(); [ - rng.gen_range(0..4), - rng.gen_range(0..4), - rng.gen_range(0..10), - rng.gen_range(0..10), + rng.random_range(0..4), + rng.random_range(0..4), + rng.random_range(0..10), + rng.random_range(0..10), ] }); let index_first_attribute = rands[0]; diff --git a/opentelemetry-sdk/benches/metrics_histogram.rs b/opentelemetry-sdk/benches/metrics_histogram.rs index 8a0b3d8125..bc1c3e09fe 100644 --- a/opentelemetry-sdk/benches/metrics_histogram.rs +++ b/opentelemetry-sdk/benches/metrics_histogram.rs @@ -28,7 +28,7 @@ use std::cell::RefCell; thread_local! { /// Store random number generator for each thread - static CURRENT_RNG: RefCell = RefCell::new(rngs::SmallRng::from_entropy()); + static CURRENT_RNG: RefCell = RefCell::new(rngs::SmallRng::from_os_rng()); } static ATTRIBUTE_VALUES: [&str; 10] = [ @@ -68,10 +68,10 @@ fn histogram_record(c: &mut Criterion) { CURRENT_RNG.with(|rng| { let mut rng = rng.borrow_mut(); [ - rng.gen_range(0..4), - rng.gen_range(0..4), - rng.gen_range(0..10), - rng.gen_range(0..10), + rng.random_range(0..4), + rng.random_range(0..4), + rng.random_range(0..10), + rng.random_range(0..10), ] }) }, @@ -104,10 +104,10 @@ fn histogram_record_with_non_static_values(c: &mut Criterion, attribute_values: CURRENT_RNG.with(|rng| { let mut rng = rng.borrow_mut(); [ - rng.gen_range(0..4), - rng.gen_range(0..4), - rng.gen_range(0..10), - rng.gen_range(0..10), + rng.random_range(0..4), + rng.random_range(0..4), + rng.random_range(0..10), + rng.random_range(0..10), ] }) }, diff --git a/opentelemetry-sdk/src/metrics/mod.rs b/opentelemetry-sdk/src/metrics/mod.rs index 4cd526a0db..a3f690a606 100644 --- a/opentelemetry-sdk/src/metrics/mod.rs +++ b/opentelemetry-sdk/src/metrics/mod.rs @@ -1924,16 +1924,16 @@ mod tests { let histogram = test_context.meter().u64_histogram("my_histogram").build(); // Act - let mut rand = rngs::SmallRng::from_entropy(); + let mut rand = rngs::SmallRng::from_os_rng(); let values_kv1 = (0..50) - .map(|_| rand.gen_range(0..100)) + .map(|_| rand.random_range(0..100)) .collect::>(); for value in values_kv1.iter() { histogram.record(*value, &[KeyValue::new("key1", "value1")]); } let values_kv2 = (0..30) - .map(|_| rand.gen_range(0..100)) + .map(|_| rand.random_range(0..100)) .collect::>(); for value in values_kv2.iter() { histogram.record(*value, &[KeyValue::new("key1", "value2")]); diff --git a/opentelemetry-sdk/src/trace/id_generator/mod.rs b/opentelemetry-sdk/src/trace/id_generator/mod.rs index 1cf483118e..716d510d91 100644 --- a/opentelemetry-sdk/src/trace/id_generator/mod.rs +++ b/opentelemetry-sdk/src/trace/id_generator/mod.rs @@ -32,5 +32,5 @@ impl IdGenerator for RandomIdGenerator { thread_local! { /// Store random number generator for each thread - static CURRENT_RNG: RefCell = RefCell::new(rngs::SmallRng::from_entropy()); + static CURRENT_RNG: RefCell = RefCell::new(rngs::SmallRng::from_os_rng()); } diff --git a/opentelemetry-sdk/src/trace/sampler.rs b/opentelemetry-sdk/src/trace/sampler.rs index 55b5838a0e..f33eb6aff9 100644 --- a/opentelemetry-sdk/src/trace/sampler.rs +++ b/opentelemetry-sdk/src/trace/sampler.rs @@ -250,7 +250,7 @@ mod tests { use super::*; use crate::testing::trace::TestSpan; use opentelemetry::trace::{SpanContext, SpanId, TraceFlags}; - use rand::Rng; + use rand::random; #[rustfmt::skip] fn sampler_data() -> Vec<(&'static str, Sampler, f64, bool, bool)> { @@ -301,7 +301,6 @@ mod tests { #[test] fn sampling() { let total = 10_000; - let mut rng = rand::thread_rng(); for (name, sampler, expectation, parent, sample_parent) in sampler_data() { let mut sampled = 0; for _ in 0..total { @@ -324,7 +323,7 @@ mod tests { None }; - let trace_id = TraceId::from(rng.gen::()); + let trace_id = TraceId::from(random::()); if sampler .should_sample( parent_context.as_ref(), diff --git a/opentelemetry-zipkin/Cargo.toml b/opentelemetry-zipkin/Cargo.toml index 2875015683..c40059e7de 100644 --- a/opentelemetry-zipkin/Cargo.toml +++ b/opentelemetry-zipkin/Cargo.toml @@ -32,7 +32,7 @@ opentelemetry_sdk = { version = "0.28", path = "../opentelemetry-sdk", features opentelemetry-http = { version = "0.28", path = "../opentelemetry-http" } serde_json = { workspace = true } serde = { workspace = true, features = ["derive"] } -typed-builder = "0.18" +typed-builder = "0.20" http = { workspace = true } reqwest = { workspace = true, optional = true } thiserror = { workspace = true } diff --git a/opentelemetry/Cargo.toml b/opentelemetry/Cargo.toml index 3b27ac3a34..6dd6dcc863 100644 --- a/opentelemetry/Cargo.toml +++ b/opentelemetry/Cargo.toml @@ -42,7 +42,7 @@ internal-logs = ["tracing"] [dev-dependencies] opentelemetry_sdk = { path = "../opentelemetry-sdk", features = ["spec_unstable_logs_enabled"]} # for documentation tests criterion = { workspace = true } -rand = { workspace = true } +rand = { workspace = true, features = ["os_rng", "thread_rng"] } [[bench]] name = "metrics" diff --git a/opentelemetry/src/metrics/mod.rs b/opentelemetry/src/metrics/mod.rs index 075d5cccbe..e971f34e42 100644 --- a/opentelemetry/src/metrics/mod.rs +++ b/opentelemetry/src/metrics/mod.rs @@ -166,7 +166,7 @@ pub trait InstrumentProvider { #[cfg(test)] mod tests { - use rand::Rng; + use rand::random; use crate::KeyValue; use std::collections::hash_map::DefaultHasher; @@ -201,10 +201,8 @@ mod tests { assert_eq!(kv1, kv2); } - let mut rng = rand::thread_rng(); - for _ in 0..100 { - let random_value = rng.gen::(); + let random_value = random::(); let kv1 = KeyValue::new("key", random_value); let kv2 = KeyValue::new("key", random_value); assert_eq!(kv1, kv2); @@ -228,10 +226,8 @@ mod tests { assert_eq!(hash_helper(&kv1), hash_helper(&kv2)); } - let mut rng = rand::thread_rng(); - for _ in 0..100 { - let random_value = rng.gen::(); + let random_value = random::(); let kv1 = KeyValue::new("key", random_value); let kv2 = KeyValue::new("key", random_value); assert_eq!(hash_helper(&kv1), hash_helper(&kv2)); diff --git a/stress/Cargo.toml b/stress/Cargo.toml index 025e5b17c7..4691def67f 100644 --- a/stress/Cargo.toml +++ b/stress/Cargo.toml @@ -46,7 +46,7 @@ num_cpus = "1.15.0" opentelemetry = { path = "../opentelemetry", features = ["metrics", "logs", "trace", "spec_unstable_logs_enabled"] } opentelemetry_sdk = { path = "../opentelemetry-sdk", features = ["metrics", "logs", "trace", "spec_unstable_logs_enabled"] } opentelemetry-appender-tracing = { path = "../opentelemetry-appender-tracing"} -rand = { version = "0.8.4", features = ["small_rng"] } +rand = { workspace = true, features = ["small_rng", "os_rng"] } tracing = { workspace = true, features = ["std"]} tracing-subscriber = { workspace = true, features = ["registry", "std"] } num-format = "0.4.4" diff --git a/stress/src/metrics_counter.rs b/stress/src/metrics_counter.rs index d64f2d11f8..debb4e869b 100644 --- a/stress/src/metrics_counter.rs +++ b/stress/src/metrics_counter.rs @@ -36,7 +36,7 @@ lazy_static! { thread_local! { /// Store random number generator for each thread - static CURRENT_RNG: RefCell = RefCell::new(rngs::SmallRng::from_entropy()); + static CURRENT_RNG: RefCell = RefCell::new(rngs::SmallRng::from_os_rng()); } fn main() { @@ -48,9 +48,9 @@ fn test_counter() { let rands = CURRENT_RNG.with(|rng| { let mut rng = rng.borrow_mut(); [ - rng.gen_range(0..len), - rng.gen_range(0..len), - rng.gen_range(0..len), + rng.random_range(0..len), + rng.random_range(0..len), + rng.random_range(0..len), ] }); let index_first_attribute = rands[0]; diff --git a/stress/src/metrics_gauge.rs b/stress/src/metrics_gauge.rs index d69efb3c4f..3c7f8489a1 100644 --- a/stress/src/metrics_gauge.rs +++ b/stress/src/metrics_gauge.rs @@ -33,7 +33,7 @@ lazy_static! { thread_local! { /// Store random number generator for each thread - static CURRENT_RNG: RefCell = RefCell::new(rngs::SmallRng::from_entropy()); + static CURRENT_RNG: RefCell = RefCell::new(rngs::SmallRng::from_os_rng()); } fn main() { @@ -45,9 +45,9 @@ fn test_gauge() { let rands = CURRENT_RNG.with(|rng| { let mut rng = rng.borrow_mut(); [ - rng.gen_range(0..len), - rng.gen_range(0..len), - rng.gen_range(0..len), + rng.random_range(0..len), + rng.random_range(0..len), + rng.random_range(0..len), ] }); let index_first_attribute = rands[0]; diff --git a/stress/src/metrics_histogram.rs b/stress/src/metrics_histogram.rs index 7443505e95..f4916dc8b2 100644 --- a/stress/src/metrics_histogram.rs +++ b/stress/src/metrics_histogram.rs @@ -36,7 +36,7 @@ lazy_static! { thread_local! { /// Store random number generator for each thread - static CURRENT_RNG: RefCell = RefCell::new(rngs::SmallRng::from_entropy()); + static CURRENT_RNG: RefCell = RefCell::new(rngs::SmallRng::from_os_rng()); static PROVIDER_PER_THREAD: SdkMeterProvider = SdkMeterProvider::builder() .with_reader(ManualReader::builder().build()) @@ -65,9 +65,9 @@ fn test_histogram(histogram: &Histogram) { let rands = CURRENT_RNG.with(|rng| { let mut rng = rng.borrow_mut(); [ - rng.gen_range(0..len), - rng.gen_range(0..len), - rng.gen_range(0..len), + rng.random_range(0..len), + rng.random_range(0..len), + rng.random_range(0..len), ] }); let index_first_attribute = rands[0]; diff --git a/stress/src/metrics_overflow.rs b/stress/src/metrics_overflow.rs index bbd79db780..4d42cc0b7b 100644 --- a/stress/src/metrics_overflow.rs +++ b/stress/src/metrics_overflow.rs @@ -29,7 +29,7 @@ lazy_static! { thread_local! { /// Store random number generator for each thread - static CURRENT_RNG: RefCell = RefCell::new(rngs::SmallRng::from_entropy()); + static CURRENT_RNG: RefCell = RefCell::new(rngs::SmallRng::from_os_rng()); } fn main() { @@ -41,6 +41,6 @@ fn test_counter() { // memory usage indefinitely even when user code misbehaves by producing // unbounded metric points (unique time series). // It also checks that SDK's internal logging is also done in a bounded way. - let rand = CURRENT_RNG.with(|rng| rng.borrow_mut().gen_range(0..100000000)); + let rand = CURRENT_RNG.with(|rng| rng.borrow_mut().random_range(0..100000000)); COUNTER.add(1, &[KeyValue::new("A", rand)]); } diff --git a/stress/src/random.rs b/stress/src/random.rs index 9d4b7f997e..b20b8331a2 100644 --- a/stress/src/random.rs +++ b/stress/src/random.rs @@ -17,7 +17,7 @@ use std::cell::RefCell; thread_local! { /// Store random number generator for each thread - static CURRENT_RNG: RefCell = RefCell::new(rngs::SmallRng::from_entropy()); + static CURRENT_RNG: RefCell = RefCell::new(rngs::SmallRng::from_os_rng()); } fn main() { @@ -28,9 +28,9 @@ fn test_random_generation() { let _i1 = CURRENT_RNG.with(|rng| { let mut rng = rng.borrow_mut(); [ - rng.gen_range(0..10), - rng.gen_range(0..10), - rng.gen_range(0..10), + rng.random_range(0..10), + rng.random_range(0..10), + rng.random_range(0..10), ] }); }