public override T Register <T>(string name, string desc, T source) { lock (this) { MetricsSourceBuilder sb = MetricsAnnotations.NewSourceBuilder(source); MetricsSource s = sb.Build(); MetricsInfo si = sb.Info(); string name2 = name == null?si.Name() : name; string finalDesc = desc == null?si.Description() : desc; string finalName = DefaultMetricsSystem.SourceName(name2, !monitoring); // be friendly to non-metrics tests allSources[finalName] = s; Log.Debug(finalName + ", " + finalDesc); if (monitoring) { RegisterSource(finalName, finalDesc, s); } // We want to re-register the source to pick up new config when the // metrics system restarts. Register(finalName, new _AbstractCallback_238(this, finalName, finalDesc, s)); return(source); } }
public virtual void TestGetMetricsAndJmx() { // create test source with a single metric counter of value 0 TestMetricsSourceAdapter.TestSource source = new TestMetricsSourceAdapter.TestSource ("test"); MetricsSourceBuilder sb = MetricsAnnotations.NewSourceBuilder(source); MetricsSource s = sb.Build(); IList <MetricsTag> injectedTags = new AList <MetricsTag>(); MetricsSourceAdapter sa = new MetricsSourceAdapter("test", "test", "test desc", s , injectedTags, null, null, 1, false); // all metrics are initially assumed to have changed MetricsCollectorImpl builder = new MetricsCollectorImpl(); IEnumerable <MetricsRecordImpl> metricsRecords = sa.GetMetrics(builder, true); // Validate getMetrics and JMX initial values MetricsRecordImpl metricsRecord = metricsRecords.GetEnumerator().Next(); Assert.Equal(0L, metricsRecord.Metrics().GetEnumerator().Next( ).Value()); Thread.Sleep(100); // skip JMX cache TTL Assert.Equal(0L, (Number)sa.GetAttribute("C1")); // change metric value source.IncrementCnt(); // validate getMetrics and JMX builder = new MetricsCollectorImpl(); metricsRecords = sa.GetMetrics(builder, true); metricsRecord = metricsRecords.GetEnumerator().Next(); Assert.True(metricsRecord.Metrics().GetEnumerator().HasNext()); Thread.Sleep(100); // skip JMX cache TTL Assert.Equal(1L, (Number)sa.GetAttribute("C1")); }
public virtual void TestPurgeOldMetrics() { // create test source with a single metric counter of value 1 TestMetricsSourceAdapter.PurgableSource source = new TestMetricsSourceAdapter.PurgableSource (this); MetricsSourceBuilder sb = MetricsAnnotations.NewSourceBuilder(source); MetricsSource s = sb.Build(); IList <MetricsTag> injectedTags = new AList <MetricsTag>(); MetricsSourceAdapter sa = new MetricsSourceAdapter("tst", "tst", "testdesc", s, injectedTags , null, null, 1, false); MBeanInfo info = sa.GetMBeanInfo(); bool sawIt = false; foreach (MBeanAttributeInfo mBeanAttributeInfo in info.GetAttributes()) { sawIt |= mBeanAttributeInfo.GetName().Equals(source.lastKeyName); } Assert.True("The last generated metric is not exported to jmx", sawIt); Thread.Sleep(1000); // skip JMX cache TTL info = sa.GetMBeanInfo(); sawIt = false; foreach (MBeanAttributeInfo mBeanAttributeInfo_1 in info.GetAttributes()) { sawIt |= mBeanAttributeInfo_1.GetName().Equals(source.lastKeyName); } Assert.True("The last generated metric is not exported to jmx", sawIt); }
Create() { MetricsSystem ms = DefaultMetricsSystem.Instance(); Org.Apache.Hadoop.Yarn.Server.Sharedcachemanager.Metrics.CleanerMetrics metricObject = new Org.Apache.Hadoop.Yarn.Server.Sharedcachemanager.Metrics.CleanerMetrics(); MetricsSourceBuilder sb = MetricsAnnotations.NewSourceBuilder(metricObject); MetricsSource s = sb.Build(); ms.Register("cleaner", "The cleaner service of truly shared cache", s); metricObject.metricSource = s; return(metricObject); }