You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by md...@apache.org on 2015/10/02 15:52:24 UTC

svn commit: r1706407 - in /jackrabbit/trunk/jackrabbit-jcr-commons/src/test/java/org/apache/jackrabbit/stats: TimeSeriesAverageTest.java TimeSeriesMaxTest.java

Author: mduerig
Date: Fri Oct  2 13:52:23 2015
New Revision: 1706407

URL: http://svn.apache.org/viewvc?rev=1706407&view=rev
Log:
JCR-3860: Properly expose missing values in TimeSeries implementations
Unit tests

Added:
    jackrabbit/trunk/jackrabbit-jcr-commons/src/test/java/org/apache/jackrabbit/stats/TimeSeriesAverageTest.java
    jackrabbit/trunk/jackrabbit-jcr-commons/src/test/java/org/apache/jackrabbit/stats/TimeSeriesMaxTest.java

Added: jackrabbit/trunk/jackrabbit-jcr-commons/src/test/java/org/apache/jackrabbit/stats/TimeSeriesAverageTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-commons/src/test/java/org/apache/jackrabbit/stats/TimeSeriesAverageTest.java?rev=1706407&view=auto
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr-commons/src/test/java/org/apache/jackrabbit/stats/TimeSeriesAverageTest.java (added)
+++ jackrabbit/trunk/jackrabbit-jcr-commons/src/test/java/org/apache/jackrabbit/stats/TimeSeriesAverageTest.java Fri Oct  2 13:52:23 2015
@@ -0,0 +1,100 @@
+package org.apache.jackrabbit.stats;
+
+import java.util.concurrent.atomic.AtomicLong;
+
+import junit.framework.TestCase;
+
+/**
+ * michid document
+ */
+public class TimeSeriesAverageTest extends TestCase {
+
+    public void testAverage() {
+        TimeSeriesRecorder values = new TimeSeriesRecorder(true);
+        TimeSeriesRecorder counts = new TimeSeriesRecorder(true);
+        TimeSeriesAverage avg = new TimeSeriesAverage(values, counts);
+        AtomicLong value = values.getCounter();
+        AtomicLong count = counts.getCounter();
+
+        // initial values
+        assertValues(avg.getValuePerSecond());
+        assertValues(avg.getValuePerMinute());
+        assertValues(avg.getValuePerHour());
+        assertValues(avg.getValuePerWeek());
+
+        // no changes in first second
+        values.recordOneSecond();
+        counts.recordOneSecond();
+        assertValues(avg.getValuePerSecond());
+        assertValues(avg.getValuePerMinute());
+        assertValues(avg.getValuePerHour());
+        assertValues(avg.getValuePerWeek());
+
+        // 2 seconds
+        value.set(42);
+        count.set(2);
+        values.recordOneSecond();
+        counts.recordOneSecond();
+        assertValues(avg.getValuePerSecond(), 21);
+        assertValues(avg.getValuePerMinute());
+        assertValues(avg.getValuePerHour());
+        assertValues(avg.getValuePerWeek());
+
+        // no changes in 3rd second
+        values.recordOneSecond();
+        counts.recordOneSecond();
+        assertValues(avg.getValuePerSecond(), 0, 21);
+        assertValues(avg.getValuePerMinute());
+        assertValues(avg.getValuePerHour());
+        assertValues(avg.getValuePerWeek());
+
+        // one minute later
+        for (int i = 0; i < 60; i++) {
+            values.recordOneSecond();
+            counts.recordOneSecond();
+        }
+        assertValues(avg.getValuePerSecond());
+        assertValues(avg.getValuePerMinute(), 21);
+        assertValues(avg.getValuePerHour());
+        assertValues(avg.getValuePerWeek());
+
+        // another minute later
+        for (int i = 0; i < 60; i++) {
+            values.recordOneSecond();
+            counts.recordOneSecond();
+        }
+        assertValues(avg.getValuePerSecond());
+        assertValues(avg.getValuePerMinute(), 0, 21);
+        assertValues(avg.getValuePerHour());
+        assertValues(avg.getValuePerWeek());
+
+        // one hour
+        for (int i = 0; i < 60 * 60; i++) {
+            values.recordOneSecond();
+            counts.recordOneSecond();
+        }
+        assertValues(avg.getValuePerSecond());
+        assertValues(avg.getValuePerMinute());
+        assertValues(avg.getValuePerHour(), 21);
+        assertValues(avg.getValuePerWeek());
+
+        // one week
+        for (int i = 0; i < 7 * 24 * 60 * 60; i++) {
+            values.recordOneSecond();
+            counts.recordOneSecond();
+        }
+        assertValues(avg.getValuePerSecond());
+        assertValues(avg.getValuePerMinute());
+        assertValues(avg.getValuePerHour());
+        assertValues(avg.getValuePerWeek(), 21);
+    }
+
+    private static void assertValues(long[] values, long... expected) {
+        for (int i = 0; i < expected.length; i++) {
+            assertEquals(expected[i], values[values.length - i - 1]);
+        }
+        for (int i = expected.length; i < values.length; i++) {
+            assertEquals(0, values[values.length - i - 1]);
+        }
+    }
+}

Added: jackrabbit/trunk/jackrabbit-jcr-commons/src/test/java/org/apache/jackrabbit/stats/TimeSeriesMaxTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-commons/src/test/java/org/apache/jackrabbit/stats/TimeSeriesMaxTest.java?rev=1706407&view=auto
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr-commons/src/test/java/org/apache/jackrabbit/stats/TimeSeriesMaxTest.java (added)
+++ jackrabbit/trunk/jackrabbit-jcr-commons/src/test/java/org/apache/jackrabbit/stats/TimeSeriesMaxTest.java Fri Oct  2 13:52:23 2015
@@ -0,0 +1,94 @@
+package org.apache.jackrabbit.stats;
+
+import junit.framework.TestCase;
+
+/**
+ * michid document
+ */
+public class TimeSeriesMaxTest extends TestCase {
+
+    public void testMax() {
+        TimeSeriesMax values = new TimeSeriesMax();
+
+        // initial values
+        assertValues(values.getValuePerSecond());
+        assertValues(values.getValuePerMinute());
+        assertValues(values.getValuePerHour());
+        assertValues(values.getValuePerWeek());
+
+        // no changes in first second
+        values.recordOneSecond();
+        assertValues(values.getValuePerSecond());
+        assertValues(values.getValuePerMinute());
+        assertValues(values.getValuePerHour());
+        assertValues(values.getValuePerWeek());
+
+        // 2 seconds
+        values.recordValue(42);
+        values.recordOneSecond();
+        assertValues(values.getValuePerSecond(), 42);
+        assertValues(values.getValuePerMinute());
+        assertValues(values.getValuePerHour());
+        assertValues(values.getValuePerWeek());
+
+        // no changes in 3rd second
+        values.recordOneSecond();
+        assertValues(values.getValuePerSecond(), 0, 42);
+        assertValues(values.getValuePerMinute());
+        assertValues(values.getValuePerHour());
+        assertValues(values.getValuePerWeek());
+
+        // 4th second
+        values.recordValue(99);
+        values.recordOneSecond();
+        assertValues(values.getValuePerSecond(), 99, 0, 42);
+        assertValues(values.getValuePerMinute());
+        assertValues(values.getValuePerHour());
+        assertValues(values.getValuePerWeek());
+
+        // one minute later
+        for (int i = 0; i < 60; i++) {
+            values.recordOneSecond();
+        }
+        assertValues(values.getValuePerSecond());
+        assertValues(values.getValuePerMinute(), 99);
+        assertValues(values.getValuePerHour());
+        assertValues(values.getValuePerWeek());
+
+        // another minute later
+        for (int i = 0; i < 60; i++) {
+            values.recordOneSecond();
+        }
+        assertValues(values.getValuePerSecond());
+        assertValues(values.getValuePerMinute(), 0, 99);
+        assertValues(values.getValuePerHour());
+        assertValues(values.getValuePerWeek());
+
+        // one hour
+        for (int i = 0; i < 60 * 60; i++) {
+            values.recordOneSecond();
+        }
+        assertValues(values.getValuePerSecond());
+        assertValues(values.getValuePerMinute());
+        assertValues(values.getValuePerHour(), 99);
+        assertValues(values.getValuePerWeek());
+
+        // one week
+        for (int i = 0; i < 7 * 24 * 60 * 60; i++) {
+            values.recordOneSecond();
+        }
+        assertValues(values.getValuePerSecond());
+        assertValues(values.getValuePerMinute());
+        assertValues(values.getValuePerHour());
+        assertValues(values.getValuePerWeek(), 99);
+    }
+
+    private static void assertValues(long[] values, long... expected) {
+        for (int i = 0; i < expected.length; i++) {
+            assertEquals(expected[i], values[values.length - i - 1]);
+        }
+        for (int i = expected.length; i < values.length; i++) {
+            assertEquals(0, values[values.length - i - 1]);
+        }
+    }
+}