Skip to content

Commit 0b979a6

Browse files
authored
Stress test for metric modified to use random attributes (#1126)
1 parent db1fedb commit 0b979a6

File tree

2 files changed

+25
-2
lines changed

2 files changed

+25
-2
lines changed

stress/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ opentelemetry_api = { path = "../opentelemetry-api", features = ["metrics", "log
2222
opentelemetry_sdk = { path = "../opentelemetry-sdk", features = ["metrics", "logs"] }
2323
opentelemetry-appender-tracing = { path = "../opentelemetry-appender-tracing"}
2424
opentelemetry-stdout = { path = "../opentelemetry-stdout", features = ["logs"]}
25+
rand = { version = "0.8.4", features = ["small_rng"] }
2526
tracing = {version = "0.1.37", default-features = false, features = ["std"]}
2627
tracing-core = "0.1.31"
2728
tracing-subscriber = { version = "0.3.0", default-features = false, features = ["registry", "std"] }

stress/src/metrics.rs

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
use lazy_static::lazy_static;
2-
use opentelemetry_api::metrics::{Counter, MeterProvider as _};
2+
use opentelemetry_api::{
3+
metrics::{Counter, MeterProvider as _},
4+
KeyValue,
5+
};
36
use opentelemetry_sdk::metrics::{ManualReader, MeterProvider};
7+
use rand::{rngs::SmallRng, Rng, SeedableRng};
48
use std::borrow::Cow;
59

610
mod throughput;
@@ -9,6 +13,10 @@ lazy_static! {
913
static ref PROVIDER: MeterProvider = MeterProvider::builder()
1014
.with_reader(ManualReader::builder().build())
1115
.build();
16+
static ref ATTRIBUTE_VALUES: [&'static str; 10] = [
17+
"value1", "value2", "value3", "value4", "value5", "value6", "value7", "value8", "value9",
18+
"value10"
19+
];
1220
static ref COUNTER: Counter<u64> = PROVIDER
1321
.meter(<&str as Into<Cow<'static, str>>>::into("test"))
1422
.u64_counter("hello")
@@ -20,5 +28,19 @@ fn main() {
2028
}
2129

2230
fn test_counter() {
23-
COUNTER.add(1, &[]);
31+
let mut rng = SmallRng::from_entropy();
32+
let len = ATTRIBUTE_VALUES.len();
33+
let index_first_attribute = rng.gen_range(0..len);
34+
let index_second_attribute = rng.gen_range(0..len);
35+
let index_third_attribute = rng.gen_range(0..len);
36+
37+
// each attribute has 10 possible values, so there are 1000 possible combinations (time-series)
38+
COUNTER.add(
39+
1,
40+
&[
41+
KeyValue::new("attribute1", ATTRIBUTE_VALUES[index_first_attribute]),
42+
KeyValue::new("attribute2", ATTRIBUTE_VALUES[index_second_attribute]),
43+
KeyValue::new("attribute3", ATTRIBUTE_VALUES[index_third_attribute]),
44+
],
45+
);
2446
}

0 commit comments

Comments
 (0)