/** * Make an metrics source from an annotated object. * @param source the annotated object. * @return a metrics source */ public static MetricsSource makeSource(Object source) { return new MetricsSourceBuilder(source, DefaultMetricsFactory.getAnnotatedMetricsFactory()).build(); }
MetricsSourceBuilder(Object source, MutableMetricsFactory factory) { this.source = checkNotNull(source, "source"); this.factory = checkNotNull(factory, "mutable metrics factory"); Class<?> cls = source.getClass(); registry = initRegistry(source); for (Field field : ReflectionUtils.getDeclaredFieldsIncludingInherited(cls)) { add(source, field); } for (Method method : ReflectionUtils.getDeclaredMethodsIncludingInherited(cls)) { add(source, method); } }
@Override public synchronized <T> T register(String name, String desc, T source) { MetricsSourceBuilder sb = MetricsAnnotations.newSourceBuilder(source); final MetricsSource s = sb.build(); MetricsInfo si = sb.info(); String name2 = name == null ? si.name() : name; final String finalDesc = desc == null ? si.description() : desc; final String finalName = // be friendly to non-metrics tests DefaultMetricsSystem.sourceName(name2, !monitoring); allSources.put(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() { @Override public void postStart() { registerSource(finalName, finalDesc, s); } }); return source; }
@Test public void testPurgeOldMetrics() throws Exception { // create test source with a single metric counter of value 1 PurgableSource source = new PurgableSource(); MetricsSourceBuilder sb = MetricsAnnotations.newSourceBuilder(source); final MetricsSource s = sb.build(); List<MetricsTag> injectedTags = new ArrayList<MetricsTag>(); MetricsSourceAdapter sa = new MetricsSourceAdapter( "tst", "tst", "testdesc", s, injectedTags, null, null, 1, false); MBeanInfo info = sa.getMBeanInfo(); boolean sawIt = false; for (MBeanAttributeInfo mBeanAttributeInfo : info.getAttributes()) { sawIt |= mBeanAttributeInfo.getName().equals(source.lastKeyName); }; assertTrue("The last generated metric is not exported to jmx", sawIt); Thread.sleep(1000); // skip JMX cache TTL info = sa.getMBeanInfo(); sawIt = false; for (MBeanAttributeInfo mBeanAttributeInfo : info.getAttributes()) { sawIt |= mBeanAttributeInfo.getName().equals(source.lastKeyName); }; assertTrue("The last generated metric is not exported to jmx", sawIt); }
public static MetricsSourceBuilder newSourceBuilder(Object source) { return new MetricsSourceBuilder(source, DefaultMetricsFactory.getAnnotatedMetricsFactory()); } }
@Test public void testPurgeOldMetrics() throws Exception { // create test source with a single metric counter of value 1 PurgableSource source = new PurgableSource(); MetricsSourceBuilder sb = MetricsAnnotations.newSourceBuilder(source); final MetricsSource s = sb.build(); List<MetricsTag> injectedTags = new ArrayList<MetricsTag>(); MetricsSourceAdapter sa = new MetricsSourceAdapter( "tst", "tst", "testdesc", s, injectedTags, null, null, 1, false); MBeanInfo info = sa.getMBeanInfo(); boolean sawIt = false; for (MBeanAttributeInfo mBeanAttributeInfo : info.getAttributes()) { sawIt |= mBeanAttributeInfo.getName().equals(source.lastKeyName); }; assertTrue("The last generated metric is not exported to jmx", sawIt); Thread.sleep(1000); // skip JMX cache TTL info = sa.getMBeanInfo(); sawIt = false; for (MBeanAttributeInfo mBeanAttributeInfo : info.getAttributes()) { sawIt |= mBeanAttributeInfo.getName().equals(source.lastKeyName); }; assertTrue("The last generated metric is not exported to jmx", sawIt); }
public static MetricsSourceBuilder newSourceBuilder(Object source) { return new MetricsSourceBuilder(source, DefaultMetricsFactory.getAnnotatedMetricsFactory()); } }
/** * Make an metrics source from an annotated object. * @param source the annotated object. * @return a metrics source */ public static MetricsSource makeSource(Object source) { return new MetricsSourceBuilder(source, DefaultMetricsFactory.getAnnotatedMetricsFactory()).build(); }
@Override public synchronized <T> T register(String name, String desc, T source) { MetricsSourceBuilder sb = MetricsAnnotations.newSourceBuilder(source); final MetricsSource s = sb.build(); MetricsInfo si = sb.info(); String name2 = name == null ? si.name() : name; final String finalDesc = desc == null ? si.description() : desc; final String finalName = // be friendly to non-metrics tests DefaultMetricsSystem.sourceName(name2, !monitoring); allSources.put(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() { @Override public void postStart() { registerSource(finalName, finalDesc, s); } }); return source; }
MetricsSourceBuilder(Object source, MutableMetricsFactory factory) { this.source = checkNotNull(source, "source"); this.factory = checkNotNull(factory, "mutable metrics factory"); Class<?> cls = source.getClass(); registry = initRegistry(source); for (Field field : ReflectionUtils.getDeclaredFieldsIncludingInherited(cls)) { add(source, field); } for (Method method : ReflectionUtils.getDeclaredMethodsIncludingInherited(cls)) { add(source, method); } }
MetricsSourceAdapter sourceAdapter = new MetricsSourceAdapter("test", "test", "test JMX cache update race condition", sourceBuilder.build(), injectedTags, null, null, JMX_CACHE_TTL, false);
public static MetricsSourceBuilder newSourceBuilder(Object source) { return new MetricsSourceBuilder(source, DefaultMetricsFactory.getAnnotatedMetricsFactory()); } }
/** * Make an metrics source from an annotated object. * @param source the annotated object. * @return a metrics source */ public static MetricsSource makeSource(Object source) { return new MetricsSourceBuilder(source, DefaultMetricsFactory.getAnnotatedMetricsFactory()).build(); }
@Override public synchronized <T> T register(String name, String desc, T source) { MetricsSourceBuilder sb = MetricsAnnotations.newSourceBuilder(source); final MetricsSource s = sb.build(); MetricsInfo si = sb.info(); String name2 = name == null ? si.name() : name; final String finalDesc = desc == null ? si.description() : desc; final String finalName = // be friendly to non-metrics tests DefaultMetricsSystem.sourceName(name2, !monitoring); allSources.put(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() { @Override public void postStart() { registerSource(finalName, finalDesc, s); } }); return source; }
MetricsSourceBuilder(Object source, MutableMetricsFactory factory) { this.source = checkNotNull(source, "source"); this.factory = checkNotNull(factory, "mutable metrics factory"); Class<?> cls = source.getClass(); registry = initRegistry(source); for (Field field : ReflectionUtils.getDeclaredFieldsIncludingInherited(cls)) { add(source, field); } for (Method method : ReflectionUtils.getDeclaredMethodsIncludingInherited(cls)) { add(source, method); } }
MetricsSourceAdapter sourceAdapter = new MetricsSourceAdapter("test", "test", "test JMX cache update race condition", sourceBuilder.build(), injectedTags, null, null, JMX_CACHE_TTL, false);
public static MetricsSourceBuilder newSourceBuilder(Object source) { return new MetricsSourceBuilder(source, DefaultMetricsFactory.getAnnotatedMetricsFactory()); } }
/** * Make an metrics source from an annotated object. * @param source the annotated object. * @return a metrics source */ public static MetricsSource makeSource(Object source) { return new MetricsSourceBuilder(source, DefaultMetricsFactory.getAnnotatedMetricsFactory()).build(); }
@Override public synchronized <T> T register(String name, String desc, T source) { MetricsSourceBuilder sb = MetricsAnnotations.newSourceBuilder(source); final MetricsSource s = sb.build(); MetricsInfo si = sb.info(); String name2 = name == null ? si.name() : name; final String finalDesc = desc == null ? si.description() : desc; final String finalName = // be friendly to non-metrics tests DefaultMetricsSystem.sourceName(name2, !monitoring); allSources.put(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() { @Override public void postStart() { registerSource(finalName, finalDesc, s); } }); return source; }
MetricsSourceBuilder(Object source, MutableMetricsFactory factory) { this.source = checkNotNull(source, "source"); this.factory = checkNotNull(factory, "mutable metrics factory"); Class<?> cls = source.getClass(); registry = initRegistry(source); for (Field field : ReflectionUtils.getDeclaredFieldsIncludingInherited(cls)) { add(source, field); } for (Method method : ReflectionUtils.getDeclaredMethodsIncludingInherited(cls)) { add(source, method); } }