You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ignite.apache.org by "zstan (via GitHub)" <gi...@apache.org> on 2023/01/31 11:21:44 UTC

[GitHub] [ignite] zstan commented on a diff in pull request #10508: IGNITE-18534 The WalWritingRate metric is not calculated when walMode is LOG_ONLY or BACKGROUND

zstan commented on code in PR #10508:
URL: https://github.com/apache/ignite/pull/10508#discussion_r1091788982


##########
modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IoDatastorageMetricsTest.java:
##########
@@ -0,0 +1,123 @@
+package org.apache.ignite.internal.processors.cache;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.atomic.AtomicLong;
+import java.util.stream.Collectors;
+import javax.management.DynamicMBean;
+import org.apache.ignite.cluster.ClusterState;
+import org.apache.ignite.configuration.CacheConfiguration;
+import org.apache.ignite.configuration.DataRegionConfiguration;
+import org.apache.ignite.configuration.DataStorageConfiguration;
+import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.configuration.WALMode;
+import org.apache.ignite.internal.IgniteEx;
+import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.spi.metric.jmx.JmxMetricExporterSpi;
+import org.apache.ignite.spi.metric.log.LogExporterSpi;
+import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+
+import static org.apache.ignite.configuration.DataStorageConfiguration.DFLT_WAL_PATH;
+import static org.junit.Assert.assertNotEquals;
+
+/**
+ *
+ * The test shows that the WalWritingRate metric is not calculated when walMode is in (LOG_ONLY, BACKGROUND).
+ * After the tests are completed, you can see the report with grep by ">>> REPORT"
+ */
+@RunWith(Parameterized.class)
+public class IoDatastorageMetricsTest extends GridCommonAbstractTest {
+    @Parameterized.Parameter
+    public WALMode walMode;
+
+    @Parameterized.Parameters(name = "walMode={0}")
+    public static Collection<Object[]> parameters() {
+        return Arrays.asList(
+            new Object[] {WALMode.FSYNC},
+            new Object[] {WALMode.BACKGROUND},
+            new Object[] {WALMode.LOG_ONLY}
+        );
+    }
+
+    private static final long MULTIPLICATOR = U.MB;
+    private static final int MAX_SEGMENTS = 20;
+
+    private static final Map<String, List<Long>> report = new HashMap<>();
+
+    @Override protected void beforeTest() throws Exception {
+        super.beforeTest();
+
+        stopAllGrids();
+        cleanPersistenceDir();
+    }
+
+    @Override protected void afterTestsStopped() throws Exception {
+        super.afterTestsStopped();
+
+        log().warning(">>> REPORT: " + report.toString());
+    }
+
+    @Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception {
+        //for debug
+        LogExporterSpi exporterSpi = new LogExporterSpi();
+        exporterSpi.setPeriod(1000);
+        exporterSpi.setExportFilter(mgrp -> mgrp.name().startsWith("io.datastorage"));
+
+        return super.getConfiguration(igniteInstanceName)
+            .setMetricExporterSpi(exporterSpi, new JmxMetricExporterSpi())
+            .setCacheConfiguration(new CacheConfiguration<>(DEFAULT_CACHE_NAME))
+            .setDataStorageConfiguration(
+                new DataStorageConfiguration()
+                    .setMetricsEnabled(true)
+                    .setWalArchivePath(DFLT_WAL_PATH)
+                    .setWalSegments(10)
+                    .setWalSegmentSize((int)(1 * MULTIPLICATOR))
+                    .setMaxWalArchiveSize(20 * MULTIPLICATOR)

Review Comment:
   20 * MB more clear than you proposal, i suppose.



##########
modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IoDatastorageMetricsTest.java:
##########
@@ -0,0 +1,123 @@
+package org.apache.ignite.internal.processors.cache;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.atomic.AtomicLong;
+import java.util.stream.Collectors;
+import javax.management.DynamicMBean;
+import org.apache.ignite.cluster.ClusterState;
+import org.apache.ignite.configuration.CacheConfiguration;
+import org.apache.ignite.configuration.DataRegionConfiguration;
+import org.apache.ignite.configuration.DataStorageConfiguration;
+import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.configuration.WALMode;
+import org.apache.ignite.internal.IgniteEx;
+import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.spi.metric.jmx.JmxMetricExporterSpi;
+import org.apache.ignite.spi.metric.log.LogExporterSpi;
+import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+
+import static org.apache.ignite.configuration.DataStorageConfiguration.DFLT_WAL_PATH;
+import static org.junit.Assert.assertNotEquals;
+
+/**
+ *
+ * The test shows that the WalWritingRate metric is not calculated when walMode is in (LOG_ONLY, BACKGROUND).
+ * After the tests are completed, you can see the report with grep by ">>> REPORT"
+ */
+@RunWith(Parameterized.class)
+public class IoDatastorageMetricsTest extends GridCommonAbstractTest {
+    @Parameterized.Parameter
+    public WALMode walMode;
+
+    @Parameterized.Parameters(name = "walMode={0}")
+    public static Collection<Object[]> parameters() {
+        return Arrays.asList(
+            new Object[] {WALMode.FSYNC},
+            new Object[] {WALMode.BACKGROUND},
+            new Object[] {WALMode.LOG_ONLY}
+        );
+    }
+
+    private static final long MULTIPLICATOR = U.MB;
+    private static final int MAX_SEGMENTS = 20;
+
+    private static final Map<String, List<Long>> report = new HashMap<>();
+
+    @Override protected void beforeTest() throws Exception {
+        super.beforeTest();
+
+        stopAllGrids();
+        cleanPersistenceDir();
+    }
+
+    @Override protected void afterTestsStopped() throws Exception {
+        super.afterTestsStopped();
+
+        log().warning(">>> REPORT: " + report.toString());
+    }
+
+    @Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception {
+        //for debug
+        LogExporterSpi exporterSpi = new LogExporterSpi();
+        exporterSpi.setPeriod(1000);
+        exporterSpi.setExportFilter(mgrp -> mgrp.name().startsWith("io.datastorage"));
+
+        return super.getConfiguration(igniteInstanceName)
+            .setMetricExporterSpi(exporterSpi, new JmxMetricExporterSpi())
+            .setCacheConfiguration(new CacheConfiguration<>(DEFAULT_CACHE_NAME))
+            .setDataStorageConfiguration(
+                new DataStorageConfiguration()
+                    .setMetricsEnabled(true)
+                    .setWalArchivePath(DFLT_WAL_PATH)
+                    .setWalSegments(10)
+                    .setWalSegmentSize((int)(1 * MULTIPLICATOR))
+                    .setMaxWalArchiveSize(20 * MULTIPLICATOR)

Review Comment:
   20 * MB more clear than your proposal, i suppose.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@ignite.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org