collapse from_owned_parts/from_hybrid_parts into from_parts
This commit is contained in:
parent
2cd4e9e100
commit
ee379362f5
|
@ -367,10 +367,10 @@ fn key_to_quoted(labels: Option<Labels>) -> proc_macro2::TokenStream {
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.map(|(key, val)| quote! { metrics::Label::new(#key, #val) });
|
.map(|(key, val)| quote! { metrics::Label::new(#key, #val) });
|
||||||
quote! {
|
quote! {
|
||||||
metrics::KeyData::from_hybrid_parts(&METRIC_NAME, vec![#(#labels),*])
|
metrics::KeyData::from_parts(&METRIC_NAME[..], vec![#(#labels),*])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Labels::Existing(e) => quote! { metrics::KeyData::from_hybrid_parts(&METRIC_NAME, #e) },
|
Labels::Existing(e) => quote! { metrics::KeyData::from_parts(&METRIC_NAME[..], #e) },
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -167,7 +167,7 @@ fn test_get_expanded_callsite_fast_path_dynamic_labels() {
|
||||||
"static METRIC_NAME : [metrics :: SharedString ; 1] = [metrics :: SharedString :: const_str (\"mykeyname\")] ; ",
|
"static METRIC_NAME : [metrics :: SharedString ; 1] = [metrics :: SharedString :: const_str (\"mykeyname\")] ; ",
|
||||||
"if let Some (recorder) = metrics :: try_recorder () { ",
|
"if let Some (recorder) = metrics :: try_recorder () { ",
|
||||||
"recorder . myop_mytype (metrics :: Key :: Owned (",
|
"recorder . myop_mytype (metrics :: Key :: Owned (",
|
||||||
"metrics :: KeyData :: from_hybrid_parts (& METRIC_NAME , vec ! [metrics :: Label :: new (\"key1\" , & value1)])",
|
"metrics :: KeyData :: from_parts (& METRIC_NAME [..] , vec ! [metrics :: Label :: new (\"key1\" , & value1)])",
|
||||||
") , 1) ; ",
|
") , 1) ; ",
|
||||||
"} ",
|
"} ",
|
||||||
"}",
|
"}",
|
||||||
|
@ -192,7 +192,7 @@ fn test_get_expanded_callsite_regular_path() {
|
||||||
"static METRIC_NAME : [metrics :: SharedString ; 1] = [metrics :: SharedString :: const_str (\"mykeyname\")] ; ",
|
"static METRIC_NAME : [metrics :: SharedString ; 1] = [metrics :: SharedString :: const_str (\"mykeyname\")] ; ",
|
||||||
"if let Some (recorder) = metrics :: try_recorder () { ",
|
"if let Some (recorder) = metrics :: try_recorder () { ",
|
||||||
"recorder . myop_mytype (",
|
"recorder . myop_mytype (",
|
||||||
"metrics :: Key :: Owned (metrics :: KeyData :: from_hybrid_parts (& METRIC_NAME , mylabels)) , ",
|
"metrics :: Key :: Owned (metrics :: KeyData :: from_parts (& METRIC_NAME [..] , mylabels)) , ",
|
||||||
"1",
|
"1",
|
||||||
") ; ",
|
") ; ",
|
||||||
"} }",
|
"} }",
|
||||||
|
@ -213,7 +213,7 @@ fn test_key_to_quoted_existing_labels() {
|
||||||
let stream = key_to_quoted(Some(Labels::Existing(Expr::Path(
|
let stream = key_to_quoted(Some(Labels::Existing(Expr::Path(
|
||||||
parse_quote! { mylabels },
|
parse_quote! { mylabels },
|
||||||
))));
|
))));
|
||||||
let expected = "metrics :: KeyData :: from_hybrid_parts (& METRIC_NAME , mylabels)";
|
let expected = "metrics :: KeyData :: from_parts (& METRIC_NAME [..] , mylabels)";
|
||||||
assert_eq!(stream.to_string(), expected);
|
assert_eq!(stream.to_string(), expected);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -226,7 +226,7 @@ fn test_key_to_quoted_inline_labels() {
|
||||||
(parse_quote! {"mylabel2"}, parse_quote! { "mylabel2" }),
|
(parse_quote! {"mylabel2"}, parse_quote! { "mylabel2" }),
|
||||||
])));
|
])));
|
||||||
let expected = concat!(
|
let expected = concat!(
|
||||||
"metrics :: KeyData :: from_hybrid_parts (& METRIC_NAME , vec ! [",
|
"metrics :: KeyData :: from_parts (& METRIC_NAME [..] , vec ! [",
|
||||||
"metrics :: Label :: new (\"mylabel1\" , mylabel1) , ",
|
"metrics :: Label :: new (\"mylabel1\" , mylabel1) , ",
|
||||||
"metrics :: Label :: new (\"mylabel2\" , \"mylabel2\")",
|
"metrics :: Label :: new (\"mylabel2\" , \"mylabel2\")",
|
||||||
"])"
|
"])"
|
||||||
|
@ -237,6 +237,6 @@ fn test_key_to_quoted_inline_labels() {
|
||||||
#[test]
|
#[test]
|
||||||
fn test_key_to_quoted_inline_labels_empty() {
|
fn test_key_to_quoted_inline_labels_empty() {
|
||||||
let stream = key_to_quoted(Some(Labels::Inline(vec![])));
|
let stream = key_to_quoted(Some(Labels::Inline(vec![])));
|
||||||
let expected = concat!("metrics :: KeyData :: from_hybrid_parts (& METRIC_NAME , vec ! [])");
|
let expected = concat!("metrics :: KeyData :: from_parts (& METRIC_NAME [..] , vec ! [])");
|
||||||
assert_eq!(stream.to_string(), expected);
|
assert_eq!(stream.to_string(), expected);
|
||||||
}
|
}
|
||||||
|
|
|
@ -126,7 +126,7 @@ where
|
||||||
fn enhance_key(&self, key: Key) -> Key {
|
fn enhance_key(&self, key: Key) -> Key {
|
||||||
let (name, mut labels) = key.into_owned().into_parts();
|
let (name, mut labels) = key.into_owned().into_parts();
|
||||||
self.enhance_labels(&mut labels);
|
self.enhance_labels(&mut labels);
|
||||||
KeyData::from_owned_parts(name, labels).into()
|
KeyData::from_parts(name, labels).into()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -52,7 +52,7 @@ fn test_basic_functionality() {
|
||||||
snapshot,
|
snapshot,
|
||||||
vec![(
|
vec![(
|
||||||
MetricKind::Counter,
|
MetricKind::Counter,
|
||||||
KeyData::from_owned_parts(
|
KeyData::from_parts(
|
||||||
"login_attempts",
|
"login_attempts",
|
||||||
vec![
|
vec![
|
||||||
Label::new("service", "login_service"),
|
Label::new("service", "login_service"),
|
||||||
|
@ -95,7 +95,7 @@ fn test_macro_forms() {
|
||||||
vec![
|
vec![
|
||||||
(
|
(
|
||||||
MetricKind::Counter,
|
MetricKind::Counter,
|
||||||
KeyData::from_owned_parts(
|
KeyData::from_parts(
|
||||||
"login_attempts_no_labels",
|
"login_attempts_no_labels",
|
||||||
vec![
|
vec![
|
||||||
Label::new("user", "ferris"),
|
Label::new("user", "ferris"),
|
||||||
|
@ -109,7 +109,7 @@ fn test_macro_forms() {
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
MetricKind::Counter,
|
MetricKind::Counter,
|
||||||
KeyData::from_owned_parts(
|
KeyData::from_parts(
|
||||||
"login_attempts_static_labels",
|
"login_attempts_static_labels",
|
||||||
vec![
|
vec![
|
||||||
Label::new("service", "login_service"),
|
Label::new("service", "login_service"),
|
||||||
|
@ -124,7 +124,7 @@ fn test_macro_forms() {
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
MetricKind::Counter,
|
MetricKind::Counter,
|
||||||
KeyData::from_owned_parts(
|
KeyData::from_parts(
|
||||||
"login_attempts_dynamic_labels",
|
"login_attempts_dynamic_labels",
|
||||||
vec![
|
vec![
|
||||||
Label::new("node_name", "localhost"),
|
Label::new("node_name", "localhost"),
|
||||||
|
@ -139,7 +139,7 @@ fn test_macro_forms() {
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
MetricKind::Counter,
|
MetricKind::Counter,
|
||||||
KeyData::from_owned_parts(
|
KeyData::from_parts(
|
||||||
"login_attempts_static_and_dynamic_labels",
|
"login_attempts_static_and_dynamic_labels",
|
||||||
vec![
|
vec![
|
||||||
Label::new("service", "login_service"),
|
Label::new("service", "login_service"),
|
||||||
|
@ -224,7 +224,7 @@ fn test_multiple_paths_to_the_same_callsite() {
|
||||||
vec![
|
vec![
|
||||||
(
|
(
|
||||||
MetricKind::Counter,
|
MetricKind::Counter,
|
||||||
KeyData::from_owned_parts(
|
KeyData::from_parts(
|
||||||
"my_counter",
|
"my_counter",
|
||||||
vec![
|
vec![
|
||||||
Label::new("shared_field", "path1"),
|
Label::new("shared_field", "path1"),
|
||||||
|
@ -239,7 +239,7 @@ fn test_multiple_paths_to_the_same_callsite() {
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
MetricKind::Counter,
|
MetricKind::Counter,
|
||||||
KeyData::from_owned_parts(
|
KeyData::from_parts(
|
||||||
"my_counter",
|
"my_counter",
|
||||||
vec![
|
vec![
|
||||||
Label::new("shared_field", "path2"),
|
Label::new("shared_field", "path2"),
|
||||||
|
@ -295,7 +295,7 @@ fn test_nested_spans() {
|
||||||
snapshot,
|
snapshot,
|
||||||
vec![(
|
vec![(
|
||||||
MetricKind::Counter,
|
MetricKind::Counter,
|
||||||
KeyData::from_owned_parts(
|
KeyData::from_parts(
|
||||||
"my_counter",
|
"my_counter",
|
||||||
vec![
|
vec![
|
||||||
Label::new("shared_field", "inner"),
|
Label::new("shared_field", "inner"),
|
||||||
|
@ -340,7 +340,7 @@ fn test_label_filtering() {
|
||||||
snapshot,
|
snapshot,
|
||||||
vec![(
|
vec![(
|
||||||
MetricKind::Counter,
|
MetricKind::Counter,
|
||||||
KeyData::from_owned_parts(
|
KeyData::from_parts(
|
||||||
"login_attempts",
|
"login_attempts",
|
||||||
vec![
|
vec![
|
||||||
Label::new("service", "login_service"),
|
Label::new("service", "login_service"),
|
||||||
|
|
|
@ -64,7 +64,7 @@ fn registry_benchmark(c: &mut Criterion) {
|
||||||
b.iter(|| {
|
b.iter(|| {
|
||||||
let key = "simple_key";
|
let key = "simple_key";
|
||||||
let labels = vec![Label::new("type", "http")];
|
let labels = vec![Label::new("type", "http")];
|
||||||
KeyData::from_owned_parts(key, labels)
|
KeyData::from_parts(key, labels)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
.with_function("const key data overhead (basic)", |b| {
|
.with_function("const key data overhead (basic)", |b| {
|
||||||
|
@ -90,7 +90,7 @@ fn registry_benchmark(c: &mut Criterion) {
|
||||||
b.iter(|| {
|
b.iter(|| {
|
||||||
let key = "simple_key";
|
let key = "simple_key";
|
||||||
let labels = vec![Label::new("type", "http")];
|
let labels = vec![Label::new("type", "http")];
|
||||||
Key::Owned(KeyData::from_owned_parts(key, labels))
|
Key::Owned(KeyData::from_parts(key, labels))
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
.with_function("cached key overhead (basic)", |b| {
|
.with_function("cached key overhead (basic)", |b| {
|
||||||
|
|
|
@ -74,6 +74,12 @@ impl From<&'static str> for NameParts {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl From<&'static [SharedString]> for NameParts {
|
||||||
|
fn from(names: &'static [SharedString]) -> NameParts {
|
||||||
|
NameParts::from_static_names(names)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl fmt::Display for NameParts {
|
impl fmt::Display for NameParts {
|
||||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||||
let s = self.to_string();
|
let s = self.to_string();
|
||||||
|
@ -105,8 +111,8 @@ impl KeyData {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Creates a [`KeyData`] from a name.
|
/// Creates a [`KeyData`] from a name and set of labels.
|
||||||
pub fn from_owned_parts<N, L>(name: N, labels: L) -> Self
|
pub fn from_parts<N, L>(name: N, labels: L) -> Self
|
||||||
where
|
where
|
||||||
N: Into<NameParts>,
|
N: Into<NameParts>,
|
||||||
L: IntoLabels,
|
L: IntoLabels,
|
||||||
|
@ -117,17 +123,6 @@ impl KeyData {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Creates a [`KeyData`] from a name and vector of [`Label`]s.
|
|
||||||
pub fn from_hybrid_parts<L>(name_parts: &'static [SharedString], labels: L) -> Self
|
|
||||||
where
|
|
||||||
L: IntoLabels,
|
|
||||||
{
|
|
||||||
Self {
|
|
||||||
name_parts: NameParts::from_static_names(name_parts),
|
|
||||||
labels: Cow::owned(labels.into_labels()),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Creates a [`KeyData`] from a static name.
|
/// Creates a [`KeyData`] from a static name.
|
||||||
///
|
///
|
||||||
/// This function is `const`, so it can be used in a static context.
|
/// This function is `const`, so it can be used in a static context.
|
||||||
|
@ -363,7 +358,7 @@ mod tests {
|
||||||
assert_eq!(previous, Some(&42));
|
assert_eq!(previous, Some(&42));
|
||||||
|
|
||||||
let labels = LABELS.to_vec();
|
let labels = LABELS.to_vec();
|
||||||
let owned_labels = KeyData::from_hybrid_parts(&BORROWED_NAME, labels);
|
let owned_labels = KeyData::from_parts(&BORROWED_NAME[..], labels);
|
||||||
assert_eq!(&owned_labels, &BORROWED_LABELS);
|
assert_eq!(&owned_labels, &BORROWED_LABELS);
|
||||||
|
|
||||||
let previous = keys.insert(owned_labels, 43);
|
let previous = keys.insert(owned_labels, 43);
|
||||||
|
@ -388,7 +383,7 @@ mod tests {
|
||||||
assert_eq!(previous, Some(&42));
|
assert_eq!(previous, Some(&42));
|
||||||
|
|
||||||
let labels = LABELS.to_vec();
|
let labels = LABELS.to_vec();
|
||||||
let owned_labels = Key::from(KeyData::from_hybrid_parts(&BORROWED_NAME, labels));
|
let owned_labels = Key::from(KeyData::from_parts(&BORROWED_NAME[..], labels));
|
||||||
let borrowed_labels = Key::from(&BORROWED_LABELS);
|
let borrowed_labels = Key::from(&BORROWED_LABELS);
|
||||||
assert_eq!(owned_labels, borrowed_labels);
|
assert_eq!(owned_labels, borrowed_labels);
|
||||||
|
|
||||||
|
@ -405,19 +400,19 @@ mod tests {
|
||||||
let result1 = key1.to_string();
|
let result1 = key1.to_string();
|
||||||
assert_eq!(result1, "KeyData(foobar)");
|
assert_eq!(result1, "KeyData(foobar)");
|
||||||
|
|
||||||
let key2 = KeyData::from_hybrid_parts(&FOOBAR_NAME, vec![Label::new("system", "http")]);
|
let key2 = KeyData::from_parts(&FOOBAR_NAME[..], vec![Label::new("system", "http")]);
|
||||||
let result2 = key2.to_string();
|
let result2 = key2.to_string();
|
||||||
assert_eq!(result2, "KeyData(foobar, [system = http])");
|
assert_eq!(result2, "KeyData(foobar, [system = http])");
|
||||||
|
|
||||||
let key3 = KeyData::from_hybrid_parts(
|
let key3 = KeyData::from_parts(
|
||||||
&FOOBAR_NAME,
|
&FOOBAR_NAME[..],
|
||||||
vec![Label::new("system", "http"), Label::new("user", "joe")],
|
vec![Label::new("system", "http"), Label::new("user", "joe")],
|
||||||
);
|
);
|
||||||
let result3 = key3.to_string();
|
let result3 = key3.to_string();
|
||||||
assert_eq!(result3, "KeyData(foobar, [system = http, user = joe])");
|
assert_eq!(result3, "KeyData(foobar, [system = http, user = joe])");
|
||||||
|
|
||||||
let key4 = KeyData::from_hybrid_parts(
|
let key4 = KeyData::from_parts(
|
||||||
&FOOBAR_NAME,
|
&FOOBAR_NAME[..],
|
||||||
vec![
|
vec![
|
||||||
Label::new("black", "black"),
|
Label::new("black", "black"),
|
||||||
Label::new("lives", "lives"),
|
Label::new("lives", "lives"),
|
||||||
|
|
Loading…
Reference in New Issue