Repository: ignite
Updated Branches:
  refs/heads/ignite-8302 [created] 73a89092b


IGNITE-8302 Reduce test IO consumption in case Direct IO is enabled, fixes 
flakyness of testPageRecoveryAfterFileCorruption


Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/73a89092
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/73a89092
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/73a89092

Branch: refs/heads/ignite-8302
Commit: 73a89092ba1cf898408e03b3385176f6f76e0228
Parents: 14c032a
Author: dpavlov <[email protected]>
Authored: Wed Apr 18 17:32:47 2018 +0300
Committer: dpavlov <[email protected]>
Committed: Wed Apr 18 17:32:47 2018 +0300

----------------------------------------------------------------------
 ...gnitePdsRecoveryAfterFileCorruptionTest.java | 29 ++++++++++++--------
 .../ignite/testsuites/IgnitePdsTestSuite2.java  |  7 +++--
 ...iveIoPdsRecoveryAfterFileCorruptionTest.java | 12 ++++++++
 .../testsuites/IgnitePdsNativeIoTestSuite2.java |  4 +++
 4 files changed, 37 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/73a89092/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/IgnitePdsRecoveryAfterFileCorruptionTest.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/IgnitePdsRecoveryAfterFileCorruptionTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/IgnitePdsRecoveryAfterFileCorruptionTest.java
index 5dc0da9..e03cf52 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/IgnitePdsRecoveryAfterFileCorruptionTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/IgnitePdsRecoveryAfterFileCorruptionTest.java
@@ -54,14 +54,14 @@ import 
org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
 import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
 
 /**
- *
+ * This test generates WAL & Page Store with N pages, then rewrites pages with 
zeroes and tries to acquire all pages.
  */
 public class IgnitePdsRecoveryAfterFileCorruptionTest extends 
GridCommonAbstractTest {
     /** Ip finder. */
     private static final TcpDiscoveryIpFinder ipFinder = new 
TcpDiscoveryVmIpFinder(true);
 
     /** Total pages. */
-    private static final int totalPages = 1024;
+    private static final int totalPages = 512;
 
     /** Cache name. */
     private final String cacheName = "cache";
@@ -120,7 +120,7 @@ public class IgnitePdsRecoveryAfterFileCorruptionTest 
extends GridCommonAbstract
     public void testPageRecoveryAfterFileCorruption() throws Exception {
         IgniteEx ig = startGrid(0);
 
-        ig.active(true);
+        ig.cluster().active(true);
 
         IgniteCache<Integer, Integer> cache = ig.cache(cacheName);
 
@@ -144,13 +144,15 @@ public class IgnitePdsRecoveryAfterFileCorruptionTest 
extends GridCommonAbstract
 
         int cacheId = sharedCtx.cache().cache(cacheName).context().cacheId();
 
-        FullPageId[] pages = new FullPageId[totalPages];
+        int pagesCnt = getTotalPagesToTest();
+
+        FullPageId[] pages = new FullPageId[pagesCnt];
 
         // Get lock to prevent assertion. A new page should be allocated under 
checkpoint lock.
         psMgr.checkpointReadLock();
 
         try {
-            for (int i = 0; i < totalPages; i++) {
+            for (int i = 0; i < pagesCnt; i++) {
                 pages[i] = new FullPageId(mem.allocatePage(cacheId, 0, 
PageIdAllocator.FLAG_DATA), cacheId);
 
                 initPage(mem, pageIO, pages[i]);
@@ -174,12 +176,19 @@ public class IgnitePdsRecoveryAfterFileCorruptionTest 
extends GridCommonAbstract
 
         ig = startGrid(0);
 
-        ig.active(true);
+        ig.cluster().active(true);
 
         checkRestore(ig, pages);
     }
 
     /**
+     * @return count of pages to test. Note complexity of test is N^2.
+     */
+    protected int getTotalPagesToTest() {
+        return totalPages;
+    }
+
+    /**
      * Initializes page.
      * @param mem page memory implementation.
      * @param pageIO page io implementation.
@@ -287,9 +296,7 @@ public class IgnitePdsRecoveryAfterFileCorruptionTest 
extends GridCommonAbstract
 
         wal.flush(start, false);
 
-        for (int i = 0; i < totalPages; i++) {
-            FullPageId fullId = pages[i];
-
+        for (FullPageId fullId : pages) {
             long page = mem.acquirePage(fullId.groupId(), fullId.pageId());
 
             try {
@@ -325,9 +332,7 @@ public class IgnitePdsRecoveryAfterFileCorruptionTest 
extends GridCommonAbstract
 
             long write = 0;
 
-            for (int i = 0; i < totalPages; i++) {
-                FullPageId fullId = pages[i];
-
+            for (FullPageId fullId : pages) {
                 if (pageIds.contains(fullId)) {
                     long cpStart = System.nanoTime();
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/73a89092/modules/core/src/test/java/org/apache/ignite/testsuites/IgnitePdsTestSuite2.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/test/java/org/apache/ignite/testsuites/IgnitePdsTestSuite2.java
 
b/modules/core/src/test/java/org/apache/ignite/testsuites/IgnitePdsTestSuite2.java
index f955b11..3317de3 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/testsuites/IgnitePdsTestSuite2.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/testsuites/IgnitePdsTestSuite2.java
@@ -76,7 +76,7 @@ public class IgnitePdsTestSuite2 extends TestSuite {
      *
      * @param suite suite to add tests into.
      */
-    public static void addRealPageStoreTestsLongRunning(TestSuite suite) {
+    private static void addRealPageStoreTestsLongRunning(TestSuite suite) {
         suite.addTestSuite(IgnitePdsTransactionsHangTest.class);
 
         
suite.addTestSuite(IgnitePdsPageEvictionDuringPartitionClearTest.class);
@@ -86,6 +86,9 @@ public class IgnitePdsTestSuite2 extends TestSuite {
         suite.addTestSuite(IgnitePdsContinuousRestartTest2.class);
 
         
suite.addTestSuite(IgnitePdsContinuousRestartTestWithSharedGroupAndIndexes.class);
+
+        // Integrity test.
+        suite.addTestSuite(IgnitePdsRecoveryAfterFileCorruptionTest.class);
     }
 
     /**
@@ -94,8 +97,6 @@ public class IgnitePdsTestSuite2 extends TestSuite {
      * @param suite suite to add tests into.
      */
     public static void addRealPageStoreTests(TestSuite suite) {
-        // Integrity test.
-        suite.addTestSuite(IgnitePdsRecoveryAfterFileCorruptionTest.class);
         suite.addTestSuite(IgnitePdsPageSizesTest.class);
 
         // Metrics test.

http://git-wip-us.apache.org/repos/asf/ignite/blob/73a89092/modules/direct-io/src/test/java/org/apache/ignite/internal/processors/cache/persistence/IgniteNativeIoPdsRecoveryAfterFileCorruptionTest.java
----------------------------------------------------------------------
diff --git 
a/modules/direct-io/src/test/java/org/apache/ignite/internal/processors/cache/persistence/IgniteNativeIoPdsRecoveryAfterFileCorruptionTest.java
 
b/modules/direct-io/src/test/java/org/apache/ignite/internal/processors/cache/persistence/IgniteNativeIoPdsRecoveryAfterFileCorruptionTest.java
new file mode 100644
index 0000000..4d65bf3
--- /dev/null
+++ 
b/modules/direct-io/src/test/java/org/apache/ignite/internal/processors/cache/persistence/IgniteNativeIoPdsRecoveryAfterFileCorruptionTest.java
@@ -0,0 +1,12 @@
+package org.apache.ignite.internal.processors.cache.persistence;
+
+/**
+ * Native IO tests can't use page store, so this test limit pages count to 128.
+ * 524288 bytes to be read 128 times, 64Mbytes total read load.
+ */
+public class IgniteNativeIoPdsRecoveryAfterFileCorruptionTest extends 
IgnitePdsRecoveryAfterFileCorruptionTest {
+    /** {@inheritDoc} */
+    @Override protected int getTotalPagesToTest() {
+        return 128;
+    }
+}

http://git-wip-us.apache.org/repos/asf/ignite/blob/73a89092/modules/direct-io/src/test/java/org/apache/ignite/testsuites/IgnitePdsNativeIoTestSuite2.java
----------------------------------------------------------------------
diff --git 
a/modules/direct-io/src/test/java/org/apache/ignite/testsuites/IgnitePdsNativeIoTestSuite2.java
 
b/modules/direct-io/src/test/java/org/apache/ignite/testsuites/IgnitePdsNativeIoTestSuite2.java
index 54dd7d3..679e3f7 100644
--- 
a/modules/direct-io/src/test/java/org/apache/ignite/testsuites/IgnitePdsNativeIoTestSuite2.java
+++ 
b/modules/direct-io/src/test/java/org/apache/ignite/testsuites/IgnitePdsNativeIoTestSuite2.java
@@ -17,6 +17,7 @@
 package org.apache.ignite.testsuites;
 
 import junit.framework.TestSuite;
+import 
org.apache.ignite.internal.processors.cache.persistence.IgniteNativeIoPdsRecoveryAfterFileCorruptionTest;
 
 /**
  * Same as {@link IgnitePdsTestSuite2} but is started with direct-oi jar in 
classpath.
@@ -31,6 +32,9 @@ public class IgnitePdsNativeIoTestSuite2 extends TestSuite {
 
         IgnitePdsTestSuite2.addRealPageStoreTests(suite);
 
+        //Integrity test with reduced count of pages.
+        
suite.addTestSuite(IgniteNativeIoPdsRecoveryAfterFileCorruptionTest.class);
+
         return suite;
     }
 }

Reply via email to