@@ -123,22 +123,25 @@ fn push<S: BuildHasher>(
123123
124124 for mf in mfs {
125125 // Check for pre-existing grouping labels:
126- for m in mf. get_metric ( ) {
127- for lp in m. get_label ( ) {
128- if lp. get_name ( ) == LABEL_NAME_JOB {
129- return Err ( Error :: Msg ( format ! (
130- "pushed metric {} already contains a \
131- job label",
132- mf. get_name( )
133- ) ) ) ;
134- }
135- if grouping. contains_key ( lp. get_name ( ) ) {
136- return Err ( Error :: Msg ( format ! (
137- "pushed metric {} already contains \
138- grouping label {}",
139- mf. get_name( ) ,
140- lp. get_name( )
141- ) ) ) ;
126+ for m in & mf. metric {
127+ for lp in & m. label {
128+ if let Some ( name) = & lp. name {
129+ if name == LABEL_NAME_JOB {
130+ return Err ( Error :: Msg ( format ! (
131+ "pushed metric {} already contains a \
132+ job label",
133+ mf. name. unwrap_or( "" . into( ) ) ,
134+ ) ) ) ;
135+ }
136+
137+ if grouping. contains_key ( name. as_str ( ) ) {
138+ return Err ( Error :: Msg ( format ! (
139+ "pushed metric {} already contains \
140+ grouping label {}",
141+ mf. name. unwrap_or( "" . into( ) ) ,
142+ name,
143+ ) ) ) ;
144+ }
142145 }
143146 }
144147 }
@@ -272,11 +275,11 @@ mod tests {
272275 ] ;
273276
274277 for case in table {
275- let mut l = proto:: LabelPair :: new ( ) ;
278+ let mut l = proto:: LabelPair :: default ( ) ;
276279 l. name = Some ( case. 0 . to_owned ( ) ) ;
277- let mut m = proto:: Metric :: new ( ) ;
280+ let mut m = proto:: Metric :: default ( ) ;
278281 m. label = vec ! [ l] ;
279- let mut mf = proto:: MetricFamily :: new ( ) ;
282+ let mut mf = proto:: MetricFamily :: default ( ) ;
280283 mf. metric = vec ! [ m] ;
281284 let res = push_metrics ( "test" , hostname_grouping_key ( ) , "mockurl" , vec ! [ mf] , None ) ;
282285 assert ! ( format!( "{}" , res. unwrap_err( ) ) . contains( case. 1 ) ) ;
0 commit comments