@@ -276,10 +276,8 @@ def add_label(key, value):
276276 Sample ('g' , add_label ('pid' , '1' ), 1.0 ),
277277 ])
278278
279- metrics ['h' ].samples .sort (
280- key = lambda x : (x [0 ], float (x [1 ].get ('le' , 0 )))
281- )
282279 expected_histogram = [
280+ Sample ('h_sum' , labels , 6.0 ),
283281 Sample ('h_bucket' , add_label ('le' , '0.005' ), 0.0 ),
284282 Sample ('h_bucket' , add_label ('le' , '0.01' ), 0.0 ),
285283 Sample ('h_bucket' , add_label ('le' , '0.025' ), 0.0 ),
@@ -296,7 +294,66 @@ def add_label(key, value):
296294 Sample ('h_bucket' , add_label ('le' , '10.0' ), 2.0 ),
297295 Sample ('h_bucket' , add_label ('le' , '+Inf' ), 2.0 ),
298296 Sample ('h_count' , labels , 2.0 ),
299- Sample ('h_sum' , labels , 6.0 ),
297+ ]
298+
299+ self .assertEqual (metrics ['h' ].samples , expected_histogram )
300+
301+ def test_collect_histogram_ordering (self ):
302+ pid = 0
303+ values .ValueClass = MultiProcessValue (lambda : pid )
304+ labels = {i : i for i in 'abcd' }
305+
306+ def add_label (key , value ):
307+ l = labels .copy ()
308+ l [key ] = value
309+ return l
310+
311+ h = Histogram ('h' , 'help' , labelnames = ['view' ], registry = None )
312+
313+ h .labels (view = 'view1' ).observe (1 )
314+
315+ pid = 1
316+
317+ h .labels (view = 'view1' ).observe (5 )
318+ h .labels (view = 'view2' ).observe (1 )
319+
320+ metrics = {m .name : m for m in self .collector .collect ()}
321+
322+ expected_histogram = [
323+ Sample ('h_sum' , {'view' : 'view1' }, 6.0 ),
324+ Sample ('h_bucket' , {'view' : 'view1' , 'le' : '0.005' }, 0.0 ),
325+ Sample ('h_bucket' , {'view' : 'view1' , 'le' : '0.01' }, 0.0 ),
326+ Sample ('h_bucket' , {'view' : 'view1' , 'le' : '0.025' }, 0.0 ),
327+ Sample ('h_bucket' , {'view' : 'view1' , 'le' : '0.05' }, 0.0 ),
328+ Sample ('h_bucket' , {'view' : 'view1' , 'le' : '0.075' }, 0.0 ),
329+ Sample ('h_bucket' , {'view' : 'view1' , 'le' : '0.1' }, 0.0 ),
330+ Sample ('h_bucket' , {'view' : 'view1' , 'le' : '0.25' }, 0.0 ),
331+ Sample ('h_bucket' , {'view' : 'view1' , 'le' : '0.5' }, 0.0 ),
332+ Sample ('h_bucket' , {'view' : 'view1' , 'le' : '0.75' }, 0.0 ),
333+ Sample ('h_bucket' , {'view' : 'view1' , 'le' : '1.0' }, 1.0 ),
334+ Sample ('h_bucket' , {'view' : 'view1' , 'le' : '2.5' }, 1.0 ),
335+ Sample ('h_bucket' , {'view' : 'view1' , 'le' : '5.0' }, 2.0 ),
336+ Sample ('h_bucket' , {'view' : 'view1' , 'le' : '7.5' }, 2.0 ),
337+ Sample ('h_bucket' , {'view' : 'view1' , 'le' : '10.0' }, 2.0 ),
338+ Sample ('h_bucket' , {'view' : 'view1' , 'le' : '+Inf' }, 2.0 ),
339+ Sample ('h_count' , {'view' : 'view1' }, 2.0 ),
340+ Sample ('h_sum' , {'view' : 'view2' }, 1.0 ),
341+ Sample ('h_bucket' , {'view' : 'view2' , 'le' : '0.005' }, 0.0 ),
342+ Sample ('h_bucket' , {'view' : 'view2' , 'le' : '0.01' }, 0.0 ),
343+ Sample ('h_bucket' , {'view' : 'view2' , 'le' : '0.025' }, 0.0 ),
344+ Sample ('h_bucket' , {'view' : 'view2' , 'le' : '0.05' }, 0.0 ),
345+ Sample ('h_bucket' , {'view' : 'view2' , 'le' : '0.075' }, 0.0 ),
346+ Sample ('h_bucket' , {'view' : 'view2' , 'le' : '0.1' }, 0.0 ),
347+ Sample ('h_bucket' , {'view' : 'view2' , 'le' : '0.25' }, 0.0 ),
348+ Sample ('h_bucket' , {'view' : 'view2' , 'le' : '0.5' }, 0.0 ),
349+ Sample ('h_bucket' , {'view' : 'view2' , 'le' : '0.75' }, 0.0 ),
350+ Sample ('h_bucket' , {'view' : 'view2' , 'le' : '1.0' }, 1.0 ),
351+ Sample ('h_bucket' , {'view' : 'view2' , 'le' : '2.5' }, 1.0 ),
352+ Sample ('h_bucket' , {'view' : 'view2' , 'le' : '5.0' }, 1.0 ),
353+ Sample ('h_bucket' , {'view' : 'view2' , 'le' : '7.5' }, 1.0 ),
354+ Sample ('h_bucket' , {'view' : 'view2' , 'le' : '10.0' }, 1.0 ),
355+ Sample ('h_bucket' , {'view' : 'view2' , 'le' : '+Inf' }, 1.0 ),
356+ Sample ('h_count' , {'view' : 'view2' }, 1.0 ),
300357 ]
301358
302359 self .assertEqual (metrics ['h' ].samples , expected_histogram )
@@ -347,10 +404,8 @@ def add_label(key, value):
347404 m .name : m for m in self .collector .merge (files , accumulate = False )
348405 }
349406
350- metrics ['h' ].samples .sort (
351- key = lambda x : (x [0 ], float (x [1 ].get ('le' , 0 )))
352- )
353407 expected_histogram = [
408+ Sample ('h_sum' , labels , 6.0 ),
354409 Sample ('h_bucket' , add_label ('le' , '0.005' ), 0.0 ),
355410 Sample ('h_bucket' , add_label ('le' , '0.01' ), 0.0 ),
356411 Sample ('h_bucket' , add_label ('le' , '0.025' ), 0.0 ),
@@ -366,7 +421,6 @@ def add_label(key, value):
366421 Sample ('h_bucket' , add_label ('le' , '7.5' ), 0.0 ),
367422 Sample ('h_bucket' , add_label ('le' , '10.0' ), 0.0 ),
368423 Sample ('h_bucket' , add_label ('le' , '+Inf' ), 0.0 ),
369- Sample ('h_sum' , labels , 6.0 ),
370424 ]
371425
372426 self .assertEqual (metrics ['h' ].samples , expected_histogram )
0 commit comments