@BeforeClass public static void init() { registry = new DefaultRegistry(); Spectator.globalRegistry().add(registry); }
public static Counter newCounter(String name, String id) { return Spectator.globalRegistry().counter(name, "id", id); }
public static Timer newTimer(String name, String id, String... tags) { return Spectator.globalRegistry().timer(name, getTagsWithId(id, tags)); }
@Override public Meter get(Id id) { rlock.lock(); try { for (Registry r : registries) { Meter m = r.get(id); if (m != null) { if (m instanceof Counter) { return counter(id); } else if (m instanceof Timer) { return timer(id); } else if (m instanceof DistributionSummary) { return distributionSummary(id); } else if (m instanceof Gauge) { return gauge(id); } else { return null; } } } return null; } finally { rlock.unlock(); } }
public void globalIterator(Function<Registry, Meter> createMeter) { Registry dflt = new ServoRegistry(); CompositeRegistry global = Spectator.globalRegistry(); global.removeAll(); global.add(dflt); boolean found = false; Id expected = createMeter.apply(dflt).id(); for (Meter m : global) { found |= m.id().equals(expected); } Assertions.assertTrue(found, "id for sub-registry could not be found in global iterator"); }
@Test public void resurrectExpiredUsingComposite() { ManualClock clock = new ManualClock(); ExpiringRegistry registry = new ExpiringRegistry(clock); CompositeRegistry cr = Spectator.globalRegistry(); cr.removeAll(); cr.add(registry); cr.counter("test").increment(); clock.setWallTime(60000 * 30); registry.removeExpiredMeters(); Assertions.assertEquals(0, registry.counters().count()); cr.counter("test").increment(); Assertions.assertEquals(1, registry.counters().count()); }
@Test public void testAddAndRemove() { CompositeRegistry r = new CompositeRegistry(clock); Counter c1 = r.counter("id1"); c1.increment(); Assertions.assertEquals(0, c1.count()); Registry r1 = new DefaultRegistry(clock); r.add(r1); c1.increment(); Assertions.assertEquals(1, c1.count()); Registry r2 = new DefaultRegistry(clock); r.add(r2); c1.increment(); Assertions.assertEquals(2, r1.counter("id1").count()); Assertions.assertEquals(1, r2.counter("id1").count()); r.remove(r1); c1.increment(5); Assertions.assertEquals(2, r1.counter("id1").count()); Assertions.assertEquals(6, r2.counter("id1").count()); }
@Test public void testHasExpired() { CompositeRegistry r = new CompositeRegistry(clock); Counter c1 = r.counter("id1"); Assertions.assertFalse(c1.hasExpired()); Registry r1 = new DefaultRegistry(clock); r.add(r1); // depends on registry type, some will be expired until first increment Assertions.assertFalse(c1.hasExpired()); c1.increment(); Assertions.assertFalse(c1.hasExpired()); }
@Test public void testAddGauges() { CompositeRegistry r = new CompositeRegistry(clock); Id id = r.createId("id1"); DefaultCounter c1 = new DefaultCounter(clock, id); c1.increment(); Registry r1 = new DefaultRegistry(clock); r.add(r1); for (Meter meter : r1) { for (Measurement m : meter.measure()) { Assertions.assertEquals(id, m.id()); } } }
private Registry newRegistry(int n, boolean warnings) { CompositeRegistry registry = new CompositeRegistry(clock); for (int i = 0; i < n; ++i) { registry.add(new DefaultRegistry(clock, new TestRegistryConfig(warnings, 10000))); } return registry; }
@PreDestroy void onShutdown() { Spectator.globalRegistry().remove(registry); } }
@Override public Meter get(Id id) { rlock.lock(); try { for (Registry r : registries) { Meter m = r.get(id); if (m != null) { if (m instanceof Counter) { return counter(id); } else if (m instanceof Timer) { return timer(id); } else if (m instanceof DistributionSummary) { return distributionSummary(id); } else if (m instanceof Gauge) { return gauge(id); } else { return null; } } } return null; } finally { rlock.unlock(); } }
@Test public void globalIteratorWithDifferences() { Registry r1 = new DefaultRegistry(); Registry r2 = new DefaultRegistry(); CompositeRegistry global = Spectator.globalRegistry(); global.removeAll(); global.add(r1); global.add(r2); boolean found = false; Counter counter = r2.counter("testCounter"); for (Meter m : global) { found |= m.id().equals(counter.id()); } Assertions.assertTrue(found, "id for sub-registry could not be found in global iterator"); } }
@Test public void resurrectExpiredUsingCompositeCachedRef() { ManualClock clock = new ManualClock(); ExpiringRegistry registry = new ExpiringRegistry(clock); CompositeRegistry cr = Spectator.globalRegistry(); cr.removeAll(); cr.add(registry); Counter c = cr.counter("test"); c.increment(); clock.setWallTime(60000 * 30); registry.removeExpiredMeters(); Assertions.assertEquals(0, registry.counters().count()); c.increment(); Assertions.assertEquals(1, registry.counters().count()); }
@PreDestroy void onShutdown() { Spectator.globalRegistry().remove(registry); } }
@Inject StaticManager(Registry registry) { this.registry = registry; Spectator.globalRegistry().add(registry); }