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<>();