internal virtual MutableMetric NewForField(FieldInfo field, Metric annotation, MetricsRegistry registry) { if (Log.IsDebugEnabled()) { Log.Debug("field " + field + " with annotation " + annotation); } MetricsInfo info = GetInfo(annotation, field); MutableMetric metric = NewForField(field, annotation); if (metric != null) { registry.Add(info.Name(), metric); return(metric); } Type cls = field.FieldType; if (cls == typeof(MutableCounterInt)) { return(registry.NewCounter(info, 0)); } if (cls == typeof(MutableCounterLong)) { return(registry.NewCounter(info, 0L)); } if (cls == typeof(MutableGaugeInt)) { return(registry.NewGauge(info, 0)); } if (cls == typeof(MutableGaugeLong)) { return(registry.NewGauge(info, 0L)); } if (cls == typeof(MutableRate)) { return(registry.NewRate(info.Name(), info.Description(), annotation.Always())); } if (cls == typeof(MutableRates)) { return(new MutableRates(registry)); } if (cls == typeof(MutableStat)) { return(registry.NewStat(info.Name(), info.Description(), annotation.SampleName(), annotation.ValueName(), annotation.Always())); } throw new MetricsException("Unsupported metric field " + field.Name + " of type " + field.FieldType.FullName); }
public virtual void TestSnapshot() { MetricsRecordBuilder mb = MetricsAsserts.MockMetricsRecordBuilder(); MetricsRegistry registry = new MetricsRegistry("test"); registry.NewCounter("c1", "int counter", 1); registry.NewCounter("c2", "long counter", 2L); registry.NewGauge("g1", "int gauge", 3); registry.NewGauge("g2", "long gauge", 4L); registry.NewStat("s1", "stat", "Ops", "Time", true).Add(0); registry.NewRate("s2", "stat", false).Add(0); registry.Snapshot(mb, true); MutableStat s2 = (MutableStat)registry.Get("s2"); s2.Snapshot(mb, true); // should get the same back. s2.Add(1); s2.Snapshot(mb, true); // should get new interval values back Org.Mockito.Mockito.Verify(mb).AddCounter(Interns.Info("c1", "int counter"), 1); Org.Mockito.Mockito.Verify(mb).AddCounter(Interns.Info("c2", "long counter"), 2L); Org.Mockito.Mockito.Verify(mb).AddGauge(Interns.Info("g1", "int gauge"), 3); Org.Mockito.Mockito.Verify(mb).AddGauge(Interns.Info("g2", "long gauge"), 4L); Org.Mockito.Mockito.Verify(mb).AddCounter(Interns.Info("S1NumOps", "Number of ops for stat" ), 1L); Org.Mockito.Mockito.Verify(mb).AddGauge(Matchers.Eq(Interns.Info("S1AvgTime", "Average time for stat" )), AdditionalMatchers.Eq(0.0, Epsilon)); Org.Mockito.Mockito.Verify(mb).AddGauge(Matchers.Eq(Interns.Info("S1StdevTime", "Standard deviation of time for stat" )), AdditionalMatchers.Eq(0.0, Epsilon)); Org.Mockito.Mockito.Verify(mb).AddGauge(Matchers.Eq(Interns.Info("S1IMinTime", "Interval min time for stat" )), AdditionalMatchers.Eq(0.0, Epsilon)); Org.Mockito.Mockito.Verify(mb).AddGauge(Matchers.Eq(Interns.Info("S1IMaxTime", "Interval max time for stat" )), AdditionalMatchers.Eq(0.0, Epsilon)); Org.Mockito.Mockito.Verify(mb).AddGauge(Matchers.Eq(Interns.Info("S1MinTime", "Min time for stat" )), AdditionalMatchers.Eq(0.0, Epsilon)); Org.Mockito.Mockito.Verify(mb).AddGauge(Matchers.Eq(Interns.Info("S1MaxTime", "Max time for stat" )), AdditionalMatchers.Eq(0.0, Epsilon)); Org.Mockito.Mockito.Verify(mb, Org.Mockito.Mockito.Times(2)).AddCounter(Interns.Info ("S2NumOps", "Number of ops for stat"), 1L); Org.Mockito.Mockito.Verify(mb, Org.Mockito.Mockito.Times(2)).AddGauge(Matchers.Eq (Interns.Info("S2AvgTime", "Average time for stat")), AdditionalMatchers.Eq(0.0, Epsilon)); Org.Mockito.Mockito.Verify(mb).AddCounter(Interns.Info("S2NumOps", "Number of ops for stat" ), 2L); Org.Mockito.Mockito.Verify(mb).AddGauge(Matchers.Eq(Interns.Info("S2AvgTime", "Average time for stat" )), AdditionalMatchers.Eq(1.0, Epsilon)); }
public virtual void TestNewMetrics() { MetricsRegistry r = new MetricsRegistry("test"); r.NewCounter("c1", "c1 desc", 1); r.NewCounter("c2", "c2 desc", 2L); r.NewGauge("g1", "g1 desc", 3); r.NewGauge("g2", "g2 desc", 4L); r.NewStat("s1", "s1 desc", "ops", "time"); Assert.Equal("num metrics in registry", 5, r.Metrics().Count); Assert.True("c1 found", r.Get("c1") is MutableCounterInt); Assert.True("c2 found", r.Get("c2") is MutableCounterLong); Assert.True("g1 found", r.Get("g1") is MutableGaugeInt); Assert.True("g2 found", r.Get("g2") is MutableGaugeLong); Assert.True("s1 found", r.Get("s1") is MutableStat); ExpectMetricsException("Metric name c1 already exists", new _Runnable_54(r)); }