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; } }
