Skip to content

Commit 92303b6

Browse files
authored
test: add benchmark tests for baggage (#2737)
1 parent 13fafcb commit 92303b6

File tree

2 files changed

+70
-0
lines changed

2 files changed

+70
-0
lines changed

opentelemetry/Cargo.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,10 @@ name = "context_attach"
6262
harness = false
6363
required-features = ["tracing"]
6464

65+
[[bench]]
66+
name = "baggage"
67+
harness = false
68+
6569
[lib]
6670
bench = false
6771

opentelemetry/benches/baggage.rs

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
use criterion::{criterion_group, criterion_main, BatchSize, Criterion};
2+
use opentelemetry::baggage::Baggage;
3+
use rand::distr::{Alphanumeric, SampleString};
4+
use rand::Rng;
5+
6+
const MAX_KEY_VALUE_PAIRS: usize = 64;
7+
8+
fn criterion_benchmark(c: &mut Criterion) {
9+
set_baggage_value(c);
10+
set_baggage_value_with_metadata(c);
11+
}
12+
13+
fn set_baggage_value(c: &mut Criterion) {
14+
let mut baggage = Baggage::new();
15+
16+
let mut rng = rand::rng();
17+
let key_value = (0..MAX_KEY_VALUE_PAIRS)
18+
.map(|_| {
19+
(
20+
Alphanumeric.sample_string(&mut rng, 4),
21+
Alphanumeric.sample_string(&mut rng, 4),
22+
)
23+
})
24+
.collect::<Vec<(String, String)>>();
25+
26+
c.bench_function("set_baggage_value", move |b| {
27+
b.iter_batched(
28+
|| rng.random_range(0..MAX_KEY_VALUE_PAIRS),
29+
|idx| {
30+
let (key, value) = key_value[idx].clone();
31+
baggage.insert(key, value);
32+
},
33+
BatchSize::SmallInput,
34+
)
35+
});
36+
}
37+
38+
fn set_baggage_value_with_metadata(c: &mut Criterion) {
39+
let mut baggage = Baggage::new();
40+
41+
let mut rng = rand::rng();
42+
let key_value_metadata = (0..MAX_KEY_VALUE_PAIRS)
43+
.map(|_| {
44+
(
45+
Alphanumeric.sample_string(&mut rng, 4),
46+
Alphanumeric.sample_string(&mut rng, 4),
47+
Alphanumeric.sample_string(&mut rng, 4),
48+
)
49+
})
50+
.collect::<Vec<(String, String, String)>>();
51+
52+
c.bench_function("set_baggage_value_with_metadata", move |b| {
53+
b.iter_batched(
54+
|| rng.random_range(0..MAX_KEY_VALUE_PAIRS),
55+
|idx| {
56+
let (key, value, metadata) = key_value_metadata[idx].clone();
57+
baggage.insert_with_metadata(key, value, metadata);
58+
},
59+
BatchSize::SmallInput,
60+
)
61+
});
62+
}
63+
64+
criterion_group!(benches, criterion_benchmark);
65+
66+
criterion_main!(benches);

0 commit comments

Comments
 (0)