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 <nsamelc...@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<>();