summaryrefslogtreecommitdiffstats
path: root/statistics/src/test/java/com/yahoo/statistics/CounterGroupTestCase.java
diff options
context:
space:
mode:
Diffstat (limited to 'statistics/src/test/java/com/yahoo/statistics/CounterGroupTestCase.java')
-rw-r--r--statistics/src/test/java/com/yahoo/statistics/CounterGroupTestCase.java132
1 files changed, 132 insertions, 0 deletions
diff --git a/statistics/src/test/java/com/yahoo/statistics/CounterGroupTestCase.java b/statistics/src/test/java/com/yahoo/statistics/CounterGroupTestCase.java
new file mode 100644
index 00000000000..5e51c3b4754
--- /dev/null
+++ b/statistics/src/test/java/com/yahoo/statistics/CounterGroupTestCase.java
@@ -0,0 +1,132 @@
+// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.statistics;
+
+
+import java.util.Arrays;
+import java.util.logging.Handler;
+import java.util.logging.LogRecord;
+import java.util.logging.Logger;
+
+import com.yahoo.container.StatisticsConfig;
+
+/**
+ * Test set for groups of counters.
+ *
+ * @author <a href="mailto:steinar@yahoo-inc.com">Steinar Knutsen</a>
+ */
+public class CounterGroupTestCase extends junit.framework.TestCase {
+ private volatile boolean gotRecord = false;
+
+ private class CounterGroupHandler extends Handler {
+ // This is for testing CounterProxy
+ @Override
+ public void publish(LogRecord record) {
+ com.yahoo.log.event.CountGroup msg = (com.yahoo.log.event.CountGroup) ((Object[]) record.getParameters())[0];
+ assertEquals("test", msg.getValue("name"));
+ String values = msg.getValue("values");
+ assertFalse("Unexpected value for a.", values.indexOf("a=500") == -1);
+ assertFalse("Unexpected value for b.", values.indexOf("b=1") == -1);
+ assertFalse("Unexpected value for c.", values.indexOf("c=0") == -1);
+ gotRecord = true;
+
+ }
+
+ @Override
+ public void flush() {
+ }
+
+ @Override
+ public void close() throws SecurityException {
+ }
+ }
+
+ public void testBasic() {
+ Logger logger = Logger.getLogger(CounterGroup.class.getName());
+ boolean initUseParentHandlers = logger.getUseParentHandlers();
+ Handler logChecker = new CounterGroupHandler();
+ logger.setUseParentHandlers(false);
+ CounterGroup c = new CounterGroup("test", Statistics.nullImplementation, false);
+ Counter n;
+ c.increment("a");
+ c.increment("b");
+ c.increment("a", 499);
+ n = c.getCounter("a");
+ assertEquals(500, n.get());
+ n = c.getCounter("b");
+ assertEquals(1, n.get());
+ n = c.getCounter("c");
+ assertEquals(0, n.get());
+ logger.addHandler(logChecker);
+ c.run();
+ assertFalse("The logging handler did not really run.", gotRecord == false);
+ // cleanup:
+ logger.removeHandler(logChecker);
+ logger.setUseParentHandlers(initUseParentHandlers);
+ }
+
+ public void testObjectContracts() {
+ CounterGroup c = new CounterGroup("test", Statistics.nullImplementation, false);
+ CounterGroup c2 = new CounterGroup("test", Statistics.nullImplementation, false);
+ c2.increment("nalle");
+ assertEquals(c, c2);
+ assertEquals(c.hashCode(), c2.hashCode());
+ c2 = new CounterGroup("nalle", Statistics.nullImplementation, false);
+ assertFalse("Different names should lead to different hashcodes",
+ c.hashCode() == c2.hashCode());
+ assertFalse("Different names should lead to equals() return false",
+ c.equals(c2));
+ }
+
+ public void testConfigStuff() {
+ Logger logger = Logger.getLogger(CounterGroup.class.getName());
+ boolean initUseParentHandlers = logger.getUseParentHandlers();
+ logger.setUseParentHandlers(false);
+ MockStatistics m = new MockStatistics();
+ final String joppe = "joppe";
+ StatisticsConfig config = new StatisticsConfig(
+ new StatisticsConfig.Builder().counterresets(Arrays
+ .asList(new StatisticsConfig.Counterresets.Builder[] {
+ new StatisticsConfig.Counterresets.Builder().name(joppe) })));
+ m.config = config;
+ CounterGroup c = new CounterGroup("nalle", m);
+ CounterGroup c2 = new CounterGroup(joppe, m);
+ final String bamse = "bamse";
+ c.increment(bamse);
+ c2.increment(bamse);
+ assertEquals(1L, c.getCounter(bamse).get());
+ assertEquals(1L, c2.getCounter(bamse).get());
+ c2.increment(bamse);
+ assertEquals(1L, c.getCounter(bamse).get());
+ assertEquals(2L, c2.getCounter(bamse).get());
+ c.run();
+ c2.run();
+ assertEquals(1L, c.getCounter(bamse).get());
+ assertEquals(0L, c2.getCounter(bamse).get());
+ logger.setUseParentHandlers(initUseParentHandlers);
+ }
+
+ public class MockStatistics implements Statistics {
+ public StatisticsConfig config = null;
+ public int registerCount = 0;
+
+ @Override
+ public void register(Handle h) {
+ registerCount += 1;
+ }
+
+ @Override
+ public void remove(String name) {
+ }
+
+ @Override
+ public StatisticsConfig getConfig() {
+ return config;
+ }
+
+ @Override
+ public int purge() {
+ return 0;
+ }
+ }
+
+}