func getValue(m *dto.Metric) float64 { if m.Gauge != nil { return m.GetGauge().GetValue() } if m.Counter != nil { return m.GetCounter().GetValue() } if m.Untyped != nil { return m.GetUntyped().GetValue() } return 0. }
// Get name and value from metric func getNameAndValue(m *dto.Metric) map[string]interface{} { fields := make(map[string]interface{}) if m.Gauge != nil { if !math.IsNaN(m.GetGauge().GetValue()) { fields["gauge"] = float64(m.GetGauge().GetValue()) } } else if m.Counter != nil { if !math.IsNaN(m.GetGauge().GetValue()) { fields["counter"] = float64(m.GetCounter().GetValue()) } } else if m.Untyped != nil { if !math.IsNaN(m.GetGauge().GetValue()) { fields["value"] = float64(m.GetUntyped().GetValue()) } } return fields }
func (s *collectionSizeSuite) TestCollectionSizeReporting(c *gc.C) { collection := s.Session.DB("test").C("test_collection") u := monitoring.NewCollectionSizeCollector("test", "test", "test", collection) defer u.Close() err := collection.Insert(bson.M{"test": true}) c.Assert(err, jc.ErrorIsNil) ch := make(chan prometheus.Metric, 2) u.Collect(ch) var m prometheus.Metric // read the size select { case m = <-ch: default: c.Error("metric not provided by collector") } var raw prometheusinternal.Metric err = m.Write(&raw) c.Assert(err, jc.ErrorIsNil) cnt := raw.GetGauge() valueOne := cnt.GetValue() // read the count select { case m = <-ch: default: c.Error("metric not provided by collector") } err = m.Write(&raw) c.Assert(err, jc.ErrorIsNil) cnt = raw.GetGauge() val := cnt.GetValue() c.Assert(val, gc.Equals, float64(1.0)) err = collection.Insert(bson.M{"test": true}) c.Assert(err, jc.ErrorIsNil) u.Collect(ch) // read the size select { case m = <-ch: default: c.Error("metric not provided by collector") } err = m.Write(&raw) c.Assert(err, jc.ErrorIsNil) cnt = raw.GetGauge() valueTwo := cnt.GetValue() c.Assert(2*valueOne, gc.Equals, valueTwo) // read the count select { case m = <-ch: default: c.Error("metric not provided by collector") } err = m.Write(&raw) c.Assert(err, jc.ErrorIsNil) cnt = raw.GetGauge() val = cnt.GetValue() c.Assert(val, gc.Equals, float64(2.0)) }