diff options
Diffstat (limited to 'container-core/src/test/java/com/yahoo/metrics/simple/CounterTest.java')
-rw-r--r-- | container-core/src/test/java/com/yahoo/metrics/simple/CounterTest.java | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/container-core/src/test/java/com/yahoo/metrics/simple/CounterTest.java b/container-core/src/test/java/com/yahoo/metrics/simple/CounterTest.java new file mode 100644 index 00000000000..dc097f71a6b --- /dev/null +++ b/container-core/src/test/java/com/yahoo/metrics/simple/CounterTest.java @@ -0,0 +1,111 @@ +// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.metrics.simple; + +import static org.junit.Assert.*; + +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.concurrent.TimeUnit; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +/** + * Functional tests for counters. + * + * @author steinar + */ +public class CounterTest { + + MetricReceiver receiver; + + @Before + public void setUp() throws Exception { + receiver = new MetricReceiver.MockReceiver(); + } + + @After + public void tearDown() throws Exception { + receiver = null; + } + + @Test + public final void testAdd() throws InterruptedException { + final String metricName = "unitTestCounter"; + Counter c = receiver.declareCounter(metricName); + c.add(); + Bucket b = receiver.getSnapshot(); + final Map<String, List<Entry<Point, UntypedMetric>>> valuesByMetricName = b.getValuesByMetricName(); + assertEquals(1, valuesByMetricName.size()); + List<Entry<Point, UntypedMetric>> x = valuesByMetricName.get(metricName); + assertEquals(1, x.size()); + assertEquals(Point.emptyPoint(), x.get(0).getKey()); + assertEquals(1L, x.get(0).getValue().getCount()); + } + + @Test + public final void testAddLong() throws InterruptedException { + final String metricName = "unitTestCounter"; + Counter c = receiver.declareCounter(metricName); + final long twoToThePowerOfFourtyeight = 65536L * 65536L * 65536L; + c.add(twoToThePowerOfFourtyeight); + Bucket b = receiver.getSnapshot(); + final Map<String, List<Entry<Point, UntypedMetric>>> valuesByMetricName = b.getValuesByMetricName(); + assertEquals(1, valuesByMetricName.size()); + List<Entry<Point, UntypedMetric>> x = valuesByMetricName.get(metricName); + assertEquals(1, x.size()); + assertEquals(Point.emptyPoint(), x.get(0).getKey()); + assertEquals(twoToThePowerOfFourtyeight, x.get(0).getValue().getCount()); + } + + @Test + public final void testAddPoint() throws InterruptedException { + final String metricName = "unitTestCounter"; + Point p = receiver.pointBuilder().set("x", 2L).set("y", 3.0d).set("z", "5").build(); + Counter c = receiver.declareCounter(metricName, p); + c.add(); + Bucket b = receiver.getSnapshot(); + final Map<String, List<Entry<Point, UntypedMetric>>> valuesByMetricName = b.getValuesByMetricName(); + assertEquals(1, valuesByMetricName.size()); + List<Entry<Point, UntypedMetric>> x = valuesByMetricName.get(metricName); + assertEquals(1, x.size()); + assertEquals(p, x.get(0).getKey()); + assertEquals(1, x.get(0).getValue().getCount()); + } + + @Test + public final void testAddLongPoint() throws InterruptedException { + final String metricName = "unitTestCounter"; + Point p = receiver.pointBuilder().set("x", 2L).set("y", 3.0d).set("z", "5").build(); + Counter c = receiver.declareCounter(metricName, p); + final long twoToThePowerOfFourtyeight = 65536L * 65536L * 65536L; + c.add(twoToThePowerOfFourtyeight, c.builder().set("x", 7).set("_y", 11.0d).set("Z", "13").build()); + Bucket b = receiver.getSnapshot(); + final Map<String, List<Entry<Point, UntypedMetric>>> valuesByMetricName = b.getValuesByMetricName(); + assertEquals(1, valuesByMetricName.size()); + List<Entry<Point, UntypedMetric>> x = valuesByMetricName.get(metricName); + assertEquals(1, x.size()); + Point actual = x.get(0).getKey(); + assertEquals(5, actual.dimensionality()); + List<String> dimensions = actual.dimensions(); + List<Value> location = actual.location(); + assertEquals(dimensions.size(), location.size()); + Iterator<String> i0 = dimensions.iterator(); + Iterator<Value> i1 = location.iterator(); + Map<String, Value> asMap = new HashMap<>(); + while (i0.hasNext() && i1.hasNext()) { + asMap.put(i0.next(), i1.next()); + } + assertEquals(Value.of(7), asMap.get("x")); + assertEquals(Value.of(3.0d), asMap.get("y")); + assertEquals(Value.of("5"), asMap.get("z")); + assertEquals(Value.of(11.0d), asMap.get("_y")); + assertEquals(Value.of("13"), asMap.get("Z")); + assertEquals(twoToThePowerOfFourtyeight, x.get(0).getValue().getCount()); + } + +} |