You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ni...@apache.org on 2019/08/01 16:44:31 UTC

[ignite] branch master updated: IGNITE-12028 [IEP-35] HitRateMetric should provide rateTimeInterval value to metrics exporter (#6739)

This is an automated email from the ASF dual-hosted git repository.

nizhikov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git


The following commit(s) were added to refs/heads/master by this push:
     new 736c133  IGNITE-12028  [IEP-35] HitRateMetric should provide rateTimeInterval value to metrics exporter (#6739)
736c133 is described below

commit 736c133a5516a31eeea0842dc9869ca319f640e1
Author: Nikita Amelchev <ns...@gmail.com>
AuthorDate: Thu Aug 1 19:44:24 2019 +0300

    IGNITE-12028  [IEP-35] HitRateMetric should provide rateTimeInterval value to metrics exporter (#6739)
    
    A public method added.
---
 .../processors/metric/impl/HitRateMetric.java      |  7 +++-
 .../ignite/internal/metric/MetricsSelfTest.java    | 39 ++++++++++++++++++----
 2 files changed, 38 insertions(+), 8 deletions(-)

diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/metric/impl/HitRateMetric.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/metric/impl/HitRateMetric.java
index 44381c2..f77fdb6 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/metric/impl/HitRateMetric.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/metric/impl/HitRateMetric.java
@@ -40,7 +40,7 @@ public class HitRateMetric extends AbstractMetric implements LongMetric {
     /**
      * @param name Name.
      * @param desc Description.
-     * @param rateTimeInterval Rate time interval.
+     * @param rateTimeInterval Rate time interval in milliseconds.
      * @param size Counters array size.
      */
     public HitRateMetric(String name, @Nullable String desc, long rateTimeInterval, int size) {
@@ -83,6 +83,11 @@ public class HitRateMetric extends AbstractMetric implements LongMetric {
         return cntr.value();
     }
 
+    /** @return Rate time interval in milliseconds. */
+    public long rateTimeInterval() {
+        return cntr.rateTimeInterval;
+    }
+
     /**
      * Actual metric.
      *
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/metric/MetricsSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/metric/MetricsSelfTest.java
index fa0bb7d..4f32db1 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/metric/MetricsSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/metric/MetricsSelfTest.java
@@ -25,32 +25,31 @@ import java.util.Spliterators;
 import java.util.stream.StreamSupport;
 import org.apache.ignite.internal.IgniteInternalFuture;
 import org.apache.ignite.internal.processors.metric.MetricRegistry;
+import org.apache.ignite.internal.processors.metric.impl.AtomicLongMetric;
 import org.apache.ignite.internal.processors.metric.impl.BooleanMetricImpl;
 import org.apache.ignite.internal.processors.metric.impl.DoubleMetricImpl;
 import org.apache.ignite.internal.processors.metric.impl.HistogramMetric;
+import org.apache.ignite.internal.processors.metric.impl.HitRateMetric;
 import org.apache.ignite.internal.processors.metric.impl.IntMetricImpl;
 import org.apache.ignite.internal.processors.metric.impl.LongAdderMetric;
-import org.apache.ignite.internal.processors.metric.impl.AtomicLongMetric;
+import org.apache.ignite.internal.util.typedef.internal.U;
 import org.apache.ignite.spi.metric.BooleanMetric;
 import org.apache.ignite.spi.metric.DoubleMetric;
 import org.apache.ignite.spi.metric.IntMetric;
 import org.apache.ignite.spi.metric.LongMetric;
 import org.apache.ignite.spi.metric.Metric;
 import org.apache.ignite.spi.metric.ObjectMetric;
+import org.apache.ignite.testframework.GridTestUtils;
+import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
 import org.junit.Before;
 import org.junit.Test;
 
 import static java.util.Arrays.asList;
 import static java.util.stream.Collectors.toSet;
-import static junit.framework.TestCase.assertNull;
-import static junit.framework.TestCase.assertTrue;
 import static org.apache.ignite.testframework.GridTestUtils.runAsync;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
 
 /** */
-public class MetricsSelfTest {
+public class MetricsSelfTest extends GridCommonAbstractTest {
     /** */
     private MetricRegistry mreg;
 
@@ -310,6 +309,32 @@ public class MetricsSelfTest {
     }
 
     /** */
+    @Test
+    public void testHitRateMetric() throws Exception {
+        long rateTimeInterval = 500;
+
+        HitRateMetric metric = mreg.hitRateMetric("testHitRate", null, rateTimeInterval, 10);
+
+        assertEquals(0, metric.value());
+
+        long startTs = U.currentTimeMillis();
+
+        GridTestUtils.runMultiThreaded(metric::increment, 10, "test-thread");
+
+        assertTrue(metric.value() > 0 || U.currentTimeMillis() - startTs > rateTimeInterval);
+
+        U.sleep(rateTimeInterval * 2);
+
+        assertEquals(0, metric.value());
+
+        assertEquals(rateTimeInterval, metric.rateTimeInterval());
+
+        metric.reset(rateTimeInterval * 2, 10);
+
+        assertEquals(rateTimeInterval * 2, metric.rateTimeInterval());
+    }
+
+    /** */
     private void run(Runnable r, int cnt) throws org.apache.ignite.IgniteCheckedException {
         List<IgniteInternalFuture> futs = new ArrayList<>();