From 1f3923a7a53db30081a11d1741a1c6e50ae08111 Mon Sep 17 00:00:00 2001 From: Tyler Levine Date: Tue, 31 Oct 2023 16:42:52 -0700 Subject: [PATCH] test: add test for using empty struct as histogram family labels --- src/encoding/text.rs | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/encoding/text.rs b/src/encoding/text.rs index ea66c42e..26b3cd5d 100644 --- a/src/encoding/text.rs +++ b/src/encoding/text.rs @@ -569,6 +569,7 @@ mod tests { use crate::metrics::{counter::Counter, exemplar::CounterWithExemplar}; use pyo3::{prelude::*, types::PyModule}; use std::borrow::Cow; + use std::fmt::Error; #[test] fn encode_counter() { @@ -764,6 +765,33 @@ mod tests { parse_with_python_client(encoded); } + #[test] + fn encode_histogram_family_with_empty_struct_family_labels() { + let mut registry = Registry::default(); + let family = + Family::new_with_constructor(|| Histogram::new(exponential_buckets(1.0, 2.0, 10))); + registry.register("my_histogram", "My histogram", family.clone()); + + #[derive(Eq, PartialEq, Hash, Debug, Clone)] + struct EmptyLabels {} + + impl EncodeLabelSet for EmptyLabels { + fn encode(&self, _encoder: crate::encoding::LabelSetEncoder) -> Result<(), Error> { + Ok(()) + } + } + + family + .get_or_create(&EmptyLabels {}) + .observe(1.0); + + let mut encoded = String::new(); + + encode(&mut encoded, ®istry).unwrap(); + + parse_with_python_client(encoded); + } + #[test] fn encode_histogram_with_exemplars() { let mut registry = Registry::default();