2020 HistogramMetricFamily ,
2121 Info ,
2222 InfoMetricFamily ,
23+ Enum ,
24+ StateSetMetricFamily ,
2325 Metric ,
2426 Summary ,
2527 SummaryMetricFamily ,
@@ -289,7 +291,7 @@ def test_setting_buckets(self):
289291 self .assertRaises (ValueError , Histogram , 'h' , 'help' , registry = None , buckets = [3 , 1 ])
290292
291293 def test_labels (self ):
292- self .assertRaises (ValueError , Histogram , 'h2 ' , 'help' , registry = None , labelnames = ['le' ])
294+ self .assertRaises (ValueError , Histogram , 'h ' , 'help' , registry = None , labelnames = ['le' ])
293295
294296 self .labels .labels ('a' ).observe (2 )
295297 self .assertEqual (0 , self .registry .get_sample_value ('hl_bucket' , {'le' : '1.0' , 'l' : 'a' }))
@@ -363,6 +365,35 @@ def test_labels(self):
363365 self .assertEqual (1 , self .registry .get_sample_value ('il_info' , {'l' : 'a' , 'foo' : 'bar' }))
364366
365367
368+ class TestEnum (unittest .TestCase ):
369+ def setUp (self ):
370+ self .registry = CollectorRegistry ()
371+ self .enum = Enum ('e' , 'help' , states = ['a' , 'b' , 'c' ], registry = self .registry )
372+ self .labels = Enum ('el' , 'help' , ['l' ], states = ['a' , 'b' , 'c' ], registry = self .registry )
373+
374+ def test_enum (self ):
375+ self .assertEqual (1 , self .registry .get_sample_value ('e' , {'e' : 'a' }))
376+ self .assertEqual (0 , self .registry .get_sample_value ('e' , {'e' : 'b' }))
377+ self .assertEqual (0 , self .registry .get_sample_value ('e' , {'e' : 'c' }))
378+
379+ self .enum .state ('b' )
380+ self .assertEqual (0 , self .registry .get_sample_value ('e' , {'e' : 'a' }))
381+ self .assertEqual (1 , self .registry .get_sample_value ('e' , {'e' : 'b' }))
382+ self .assertEqual (0 , self .registry .get_sample_value ('e' , {'e' : 'c' }))
383+
384+ self .assertRaises (ValueError , self .enum .state , 'd' )
385+ self .assertRaises (ValueError , Enum , 'e' , 'help' , registry = None )
386+
387+ def test_labels (self ):
388+ self .labels .labels ('a' ).state ('c' )
389+ self .assertEqual (0 , self .registry .get_sample_value ('el' , {'l' : 'a' , 'el' : 'a' }))
390+ self .assertEqual (0 , self .registry .get_sample_value ('el' , {'l' : 'a' , 'el' : 'b' }))
391+ self .assertEqual (1 , self .registry .get_sample_value ('el' , {'l' : 'a' , 'el' : 'c' }))
392+
393+ e = Enum ('e' , 'help' , registry = None , labelnames = ['e' ])
394+ self .assertRaises (ValueError , e .labels , '' )
395+
396+
366397class TestMetricWrapper (unittest .TestCase ):
367398 def setUp (self ):
368399 self .registry = CollectorRegistry ()
@@ -524,6 +555,18 @@ def test_info_labels(self):
524555 self .custom_collector (cmf )
525556 self .assertEqual (1 , self .registry .get_sample_value ('i_info' , {'a' : 'b' , 'c' : 'd' }))
526557
558+ def test_stateset (self ):
559+ self .custom_collector (StateSetMetricFamily ('s' , 'help' , value = {'a' : True , 'b' : True ,}))
560+ self .assertEqual (1 , self .registry .get_sample_value ('s' , {'s' : 'a' }))
561+ self .assertEqual (1 , self .registry .get_sample_value ('s' , {'s' : 'b' }))
562+
563+ def test_stateset_labels (self ):
564+ cmf = StateSetMetricFamily ('s' , 'help' , labels = ['foo' ])
565+ cmf .add_metric (['bar' ], {'a' : False , 'b' : False ,})
566+ self .custom_collector (cmf )
567+ self .assertEqual (0 , self .registry .get_sample_value ('s' , {'foo' : 'bar' , 's' : 'a' }))
568+ self .assertEqual (0 , self .registry .get_sample_value ('s' , {'foo' : 'bar' , 's' : 'b' }))
569+
527570 def test_bad_constructors (self ):
528571 self .assertRaises (ValueError , UntypedMetricFamily , 'u' , 'help' , value = 1 , labels = [])
529572 self .assertRaises (ValueError , UntypedMetricFamily , 'u' , 'help' , value = 1 , labels = ['a' ])
@@ -550,6 +593,9 @@ def test_bad_constructors(self):
550593 self .assertRaises (ValueError , InfoMetricFamily , 'i' , 'help' , value = {}, labels = [])
551594 self .assertRaises (ValueError , InfoMetricFamily , 'i' , 'help' , value = {}, labels = ['a' ])
552595
596+ self .assertRaises (ValueError , StateSetMetricFamily , 's' , 'help' , value = {'a' : True }, labels = [])
597+ self .assertRaises (ValueError , StateSetMetricFamily , 's' , 'help' , value = {'a' : True }, labels = ['a' ])
598+
553599 def test_labelnames (self ):
554600 cmf = UntypedMetricFamily ('u' , 'help' , labels = iter (['a' ]))
555601 self .assertEqual (('a' ,), cmf ._labelnames )
0 commit comments