From f9d60745685c70976fa6656edc307ef4fb25abc6 Mon Sep 17 00:00:00 2001 From: "Sean C. Sullivan" Date: Sun, 4 Dec 2022 01:18:43 -0800 Subject: [PATCH] add more tests for PolledMeter --- .../api/patterns/PolledMeterTest.java | 79 +++++++++++++++++++ 1 file changed, 79 insertions(+) diff --git a/spectator-api/src/test/java/com/netflix/spectator/api/patterns/PolledMeterTest.java b/spectator-api/src/test/java/com/netflix/spectator/api/patterns/PolledMeterTest.java index 71d4c0a71..8ee04c7ec 100644 --- a/spectator-api/src/test/java/com/netflix/spectator/api/patterns/PolledMeterTest.java +++ b/spectator-api/src/test/java/com/netflix/spectator/api/patterns/PolledMeterTest.java @@ -26,9 +26,15 @@ import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; +import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.atomic.AtomicLong; +import java.util.concurrent.atomic.LongAdder; public class PolledMeterTest { @@ -197,4 +203,77 @@ public void poll() { Assertions.assertEquals(1.0, g.value(), 1e-12); Assertions.assertEquals(1, c.count()); } + + @Test + public void monitorValueLongAdder() { + final Registry r = new DefaultRegistry(Clock.SYSTEM, p -> null); + final Id id = r.createId("test"); + + final LongAdder v = PolledMeter.using(r) + .withName("test") + .monitorValue(new LongAdder()); + + Assertions.assertEquals(0.0, r.counter(id).actualCount()); + + v.increment(); + PolledMeter.update(r); + Assertions.assertEquals(1.0, r.gauge(id).value()); + + v.decrement(); + PolledMeter.update(r); + Assertions.assertEquals(0.0, r.gauge(id).value()); + + v.add(50); + PolledMeter.update(r); + Assertions.assertEquals(50.0, r.gauge(id).value()); + } + + @Test + public void monitorSizeOfList() { + final Registry r = new DefaultRegistry(Clock.SYSTEM, p -> null); + final Id id = r.createId("test"); + + final List list = PolledMeter.using(r) + .withName("test") + .monitorSize(Collections.synchronizedList(new ArrayList())); + + Assertions.assertEquals(0.0, r.counter(id).actualCount()); + + list.add("a"); + PolledMeter.update(r); + Assertions.assertEquals(1.0, r.gauge(id).value()); + + list.add("b"); + PolledMeter.update(r); + Assertions.assertEquals(2.0, r.gauge(id).value()); + + list.clear(); + PolledMeter.update(r); + Assertions.assertEquals(0.0, r.gauge(id).value()); + } + + @Test + public void monitorSizeOfMap() { + final Registry r = new DefaultRegistry(Clock.SYSTEM, p -> null); + final Id id = r.createId("test"); + + final Map map = PolledMeter.using(r) + .withName("test") + .monitorSize(new ConcurrentHashMap()); + + Assertions.assertEquals(0.0, r.counter(id).actualCount()); + + map.put("a", "a-value"); + PolledMeter.update(r); + Assertions.assertEquals(1.0, r.gauge(id).value()); + + map.put("b", "b-value"); + PolledMeter.update(r); + Assertions.assertEquals(2.0, r.gauge(id).value()); + + map.remove("a"); + map.remove("b"); + PolledMeter.update(r); + Assertions.assertEquals(0.0, r.gauge(id).value()); + } }