IGNITE-2650
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/89172691 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/89172691 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/89172691 Branch: refs/heads/ignite-1186 Commit: 891726916390c2de5c4c28cc308b0fac0a3c9974 Parents: c4d6f3c Author: ruskim <[email protected]> Authored: Tue Mar 1 12:13:14 2016 +0300 Committer: Anton Vinogradov <[email protected]> Committed: Tue Mar 1 12:13:14 2016 +0300 ---------------------------------------------------------------------- .../processors/cache/GridCacheProcessor.java | 8 + .../processors/cache/GridCacheUtils.java | 15 ++ .../org/apache/ignite/spi/IgniteSpiAdapter.java | 15 ++ .../ignite/spi/IgniteSpiConsistencyChecked.java | 8 + .../spi/swapspace/file/FileSwapSpaceSpi.java | 2 + .../spi/swapspace/noop/NoopSwapSpaceSpi.java | 2 + ...ridCacheSwapSpaceSpiConsistencySelfTest.java | 146 +++++++++++++++++++ .../GridSwapSpaceSpiConsistencySelfTest.java | 131 +++++++++++++++++ .../testsuites/IgniteCacheTestSuite5.java | 2 + .../IgniteSpiSwapSpaceSelfTestSuite.java | 2 + 10 files changed, 331 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/89172691/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java index a8f205b..c0fc32a 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java @@ -2271,6 +2271,14 @@ public class GridCacheProcessor extends GridProcessorAdapter { req.startCacheConfiguration(ccfg); } + // Fail cache with swap enabled creation on grid without swap space SPI. + if (ccfg.isSwapEnabled()) + for (ClusterNode n : ctx.discovery().allNodes()) + if (!GridCacheUtils.clientNode(n) && !GridCacheUtils.isSwapEnabled(n)) + return new GridFinishedFuture<>(new IgniteCheckedException("Failed to start cache " + + cacheName + " with swap enabled: Remote Node with ID " + n.id().toString().toUpperCase() + + " has not swap SPI configured")); + if (nearCfg != null) req.nearCacheConfiguration(nearCfg); http://git-wip-us.apache.org/repos/asf/ignite/blob/89172691/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheUtils.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheUtils.java index cd21794..dce5357 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheUtils.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheUtils.java @@ -90,6 +90,7 @@ import org.apache.ignite.lang.IgnitePredicate; import org.apache.ignite.lang.IgniteReducer; import org.apache.ignite.lifecycle.LifecycleAware; import org.apache.ignite.plugin.CachePluginConfiguration; +import org.apache.ignite.spi.swapspace.noop.NoopSwapSpaceSpi; import org.apache.ignite.transactions.Transaction; import org.apache.ignite.transactions.TransactionConcurrency; import org.apache.ignite.transactions.TransactionIsolation; @@ -283,6 +284,10 @@ public class GridCacheUtils { } }; + /** NoopSwapSpaceSpi used attribute. */ + private static final String NOOP_SWAP_SPACE_SPI_ATTR_NAME = U.spiAttribute(new NoopSwapSpaceSpi(), + IgniteNodeAttributes.ATTR_SPI_CLASS); + /** * Ensure singleton. */ @@ -1836,4 +1841,14 @@ public class GridCacheUtils { return res; } + + /** + * Checks if swap is enabled on node. + * + * @param node Node + * @return {@code true} if swap is enabled, {@code false} otherwise. + */ + public static boolean isSwapEnabled(ClusterNode node) { + return !node.attributes().containsKey(NOOP_SWAP_SPACE_SPI_ATTR_NAME); + } } http://git-wip-us.apache.org/repos/asf/ignite/blob/89172691/modules/core/src/main/java/org/apache/ignite/spi/IgniteSpiAdapter.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/spi/IgniteSpiAdapter.java b/modules/core/src/main/java/org/apache/ignite/spi/IgniteSpiAdapter.java index 1cb202c..f31aae7 100644 --- a/modules/core/src/main/java/org/apache/ignite/spi/IgniteSpiAdapter.java +++ b/modules/core/src/main/java/org/apache/ignite/spi/IgniteSpiAdapter.java @@ -39,10 +39,12 @@ import org.apache.ignite.internal.IgniteKernal; import org.apache.ignite.internal.IgniteNodeAttributes; import org.apache.ignite.internal.managers.communication.GridMessageListener; import org.apache.ignite.internal.managers.eventstorage.GridLocalEventListener; +import org.apache.ignite.internal.processors.cache.GridCacheUtils; import org.apache.ignite.internal.processors.timeout.GridSpiTimeoutObject; import org.apache.ignite.internal.util.IgniteExceptionRegistry; import org.apache.ignite.internal.util.typedef.F; import org.apache.ignite.internal.util.typedef.X; +import org.apache.ignite.internal.util.typedef.internal.CU; import org.apache.ignite.internal.util.typedef.internal.SB; import org.apache.ignite.internal.util.typedef.internal.U; import org.apache.ignite.lang.IgniteFuture; @@ -448,6 +450,15 @@ public abstract class IgniteSpiAdapter implements IgniteSpi, IgniteSpiManagement } /** + * @return {@code true} if client cluster nodes should be checked. + */ + private boolean checkClient() { + IgniteSpiConsistencyChecked ann = U.getAnnotation(getClass(), IgniteSpiConsistencyChecked.class); + + return ann != null && ann.checkClient(); + } + + /** * Method which is called in the end of checkConfigurationConsistency() method. May be overriden in SPIs. * * @param spiCtx SPI context. @@ -480,10 +491,14 @@ public abstract class IgniteSpiAdapter implements IgniteSpi, IgniteSpiManagement */ boolean optional = checkOptional(); boolean enabled = checkEnabled(); + boolean checkClient = checkClient(); if (!enabled) return; + if (!checkClient && (CU.clientNode(getLocalNode()) || CU.clientNode(node))) + return; + String clsAttr = createSpiAttributeName(IgniteNodeAttributes.ATTR_SPI_CLASS); String name = getName(); http://git-wip-us.apache.org/repos/asf/ignite/blob/89172691/modules/core/src/main/java/org/apache/ignite/spi/IgniteSpiConsistencyChecked.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/spi/IgniteSpiConsistencyChecked.java b/modules/core/src/main/java/org/apache/ignite/spi/IgniteSpiConsistencyChecked.java index 157d9ce..81ab21e 100644 --- a/modules/core/src/main/java/org/apache/ignite/spi/IgniteSpiConsistencyChecked.java +++ b/modules/core/src/main/java/org/apache/ignite/spi/IgniteSpiConsistencyChecked.java @@ -40,4 +40,12 @@ public @interface IgniteSpiConsistencyChecked { */ @SuppressWarnings("JavaDoc") public boolean optional(); + + /** + * If false, skip consistency checks for client cluster nodes. Could be useful + * for SwapSpaceSpi for example, since client nodes has no data at all, so they + * don't need to be consistent with server nodes. + */ + @SuppressWarnings("JavaDoc") + public boolean checkClient() default true; } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ignite/blob/89172691/modules/core/src/main/java/org/apache/ignite/spi/swapspace/file/FileSwapSpaceSpi.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/spi/swapspace/file/FileSwapSpaceSpi.java b/modules/core/src/main/java/org/apache/ignite/spi/swapspace/file/FileSwapSpaceSpi.java index df35ed3..8809f08 100644 --- a/modules/core/src/main/java/org/apache/ignite/spi/swapspace/file/FileSwapSpaceSpi.java +++ b/modules/core/src/main/java/org/apache/ignite/spi/swapspace/file/FileSwapSpaceSpi.java @@ -61,6 +61,7 @@ import org.apache.ignite.resources.LoggerResource; import org.apache.ignite.spi.IgniteSpiAdapter; import org.apache.ignite.spi.IgniteSpiCloseableIterator; import org.apache.ignite.spi.IgniteSpiConfiguration; +import org.apache.ignite.spi.IgniteSpiConsistencyChecked; import org.apache.ignite.spi.IgniteSpiException; import org.apache.ignite.spi.IgniteSpiMultipleInstancesSupport; import org.apache.ignite.spi.IgniteSpiThread; @@ -137,6 +138,7 @@ import static org.apache.ignite.events.EventType.EVT_SWAP_SPACE_DATA_STORED; * @see org.apache.ignite.spi.swapspace.SwapSpaceSpi */ @IgniteSpiMultipleInstancesSupport(true) +@IgniteSpiConsistencyChecked(optional = false, checkClient = false) @SuppressWarnings({"PackageVisibleInnerClass", "PackageVisibleField"}) public class FileSwapSpaceSpi extends IgniteSpiAdapter implements SwapSpaceSpi, FileSwapSpaceSpiMBean { /** http://git-wip-us.apache.org/repos/asf/ignite/blob/89172691/modules/core/src/main/java/org/apache/ignite/spi/swapspace/noop/NoopSwapSpaceSpi.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/spi/swapspace/noop/NoopSwapSpaceSpi.java b/modules/core/src/main/java/org/apache/ignite/spi/swapspace/noop/NoopSwapSpaceSpi.java index 13622d9..df73eb0 100644 --- a/modules/core/src/main/java/org/apache/ignite/spi/swapspace/noop/NoopSwapSpaceSpi.java +++ b/modules/core/src/main/java/org/apache/ignite/spi/swapspace/noop/NoopSwapSpaceSpi.java @@ -30,6 +30,7 @@ import org.apache.ignite.lang.IgniteInClosure; import org.apache.ignite.resources.LoggerResource; import org.apache.ignite.spi.IgniteSpiAdapter; import org.apache.ignite.spi.IgniteSpiCloseableIterator; +import org.apache.ignite.spi.IgniteSpiConsistencyChecked; import org.apache.ignite.spi.IgniteSpiException; import org.apache.ignite.spi.IgniteSpiMultipleInstancesSupport; import org.apache.ignite.spi.IgniteSpiNoop; @@ -44,6 +45,7 @@ import org.jetbrains.annotations.Nullable; */ @IgniteSpiNoop @IgniteSpiMultipleInstancesSupport(true) +@IgniteSpiConsistencyChecked(optional = false, checkClient = false) public class NoopSwapSpaceSpi extends IgniteSpiAdapter implements SwapSpaceSpi { /** Logger. */ @LoggerResource http://git-wip-us.apache.org/repos/asf/ignite/blob/89172691/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheSwapSpaceSpiConsistencySelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheSwapSpaceSpiConsistencySelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheSwapSpaceSpiConsistencySelfTest.java new file mode 100644 index 0000000..74ac2fc --- /dev/null +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheSwapSpaceSpiConsistencySelfTest.java @@ -0,0 +1,146 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.ignite.internal.processors.cache; + +import java.util.concurrent.Callable; +import javax.cache.CacheException; +import org.apache.ignite.Ignite; +import org.apache.ignite.IgniteCache; +import org.apache.ignite.configuration.CacheConfiguration; +import org.apache.ignite.configuration.IgniteConfiguration; +import org.apache.ignite.spi.swapspace.file.FileSwapSpaceSpi; +import org.apache.ignite.spi.swapspace.noop.NoopSwapSpaceSpi; +import org.apache.ignite.testframework.GridTestUtils; +import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest; +import org.apache.ignite.testframework.junits.common.GridCommonTest; + +/** + * Check creation of cache with swap space enabled on grids with and without swap space spi + */ +@SuppressWarnings({"ProhibitedExceptionDeclared"}) +@GridCommonTest(group = "Kernal") +public class GridCacheSwapSpaceSpiConsistencySelfTest extends GridCommonAbstractTest { + /** */ + protected static final String GRID_WITHOUT_SWAP_SPACE = "grid-without-swap-space"; + + /** */ + protected static final String GRID_WITH_SWAP_SPACE = "grid-with-swap-space"; + + /** */ + protected static final String GRID_CLIENT = "grid-client"; + + /** */ + protected static final String CACHE_NAME = "TestCache"; + + /** + * + */ + public GridCacheSwapSpaceSpiConsistencySelfTest() { + super(false); + } + + /** {@inheritDoc} */ + @SuppressWarnings({"unchecked"}) + @Override protected IgniteConfiguration getConfiguration(String gridName) throws Exception { + IgniteConfiguration cfg = super.getConfiguration(gridName); + + if (gridName.startsWith(GRID_WITHOUT_SWAP_SPACE)) + cfg.setSwapSpaceSpi(new NoopSwapSpaceSpi()); + + if (gridName.startsWith(GRID_WITH_SWAP_SPACE)) + cfg.setSwapSpaceSpi(new FileSwapSpaceSpi()); + + if (GRID_CLIENT.equals(gridName)) + cfg.setClientMode(true); + + return cfg; + } + + /** {@inheritDoc} */ + @Override protected void afterTest() throws Exception { + stopAllGrids(); + } + + /** + * + */ + public void testInconsistentCacheCreationFromClient() throws Exception { + testInconsistentCacheCreation(true); + } + + /** + * + */ + public void testInconsistentCacheCreationFromServer() throws Exception { + testInconsistentCacheCreation(false); + } + + /** + * It should be impossible to create cache with swap enabled on grid without swap. + */ + public void testInconsistentCacheCreation(boolean fromClient) throws Exception { + startGrid(GRID_WITHOUT_SWAP_SPACE); + + final Ignite ignite = startGrid(fromClient ? GRID_CLIENT : GRID_WITHOUT_SWAP_SPACE + "2"); + + final CacheConfiguration<Integer, String> cfg = new CacheConfiguration<>(); + + cfg.setSwapEnabled(true); + cfg.setName(CACHE_NAME); + + GridTestUtils.assertThrows(log, new Callable<Object>() { + @Override public Object call() throws Exception { + return ignite.createCache(cfg); + } + }, CacheException.class, "Failed to start cache " + CACHE_NAME + " with swap enabled:"); + } + + /** + * + */ + public void testConsistentCacheCreationFromClient() throws Exception { + testConsistentCacheCreation(true); + } + + /** + * + */ + public void testConsistentCacheCreationFromServer() throws Exception { + testConsistentCacheCreation(false); + } + + /** + * It should ok to create cache with swap enabled on grid with swap. + */ + public void testConsistentCacheCreation(boolean fromClient) throws Exception { + startGrid(GRID_WITH_SWAP_SPACE); + + final Ignite ignite = startGrid(fromClient ? GRID_CLIENT : GRID_WITH_SWAP_SPACE + "2"); + + final CacheConfiguration<Integer, String> cfg = new CacheConfiguration<>(); + + cfg.setSwapEnabled(true); + cfg.setName(CACHE_NAME); + + IgniteCache<Integer, String> cache = ignite.createCache(cfg); + + cache.put(1, "one"); + + assert cache.get(1).equals("one"); + } +} http://git-wip-us.apache.org/repos/asf/ignite/blob/89172691/modules/core/src/test/java/org/apache/ignite/spi/swapspace/GridSwapSpaceSpiConsistencySelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/spi/swapspace/GridSwapSpaceSpiConsistencySelfTest.java b/modules/core/src/test/java/org/apache/ignite/spi/swapspace/GridSwapSpaceSpiConsistencySelfTest.java new file mode 100644 index 0000000..8efafdf --- /dev/null +++ b/modules/core/src/test/java/org/apache/ignite/spi/swapspace/GridSwapSpaceSpiConsistencySelfTest.java @@ -0,0 +1,131 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.ignite.spi.swapspace; + +import java.util.concurrent.Callable; +import org.apache.ignite.Ignite; +import org.apache.ignite.IgniteCache; +import org.apache.ignite.IgniteCheckedException; +import org.apache.ignite.configuration.IgniteConfiguration; +import org.apache.ignite.spi.swapspace.file.FileSwapSpaceSpi; +import org.apache.ignite.spi.swapspace.noop.NoopSwapSpaceSpi; +import org.apache.ignite.testframework.GridTestUtils; +import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest; + +/** + * Check that all server nodes in grid have configured the same swap space spi. Check that client nodes could have any + * swap space spi. + */ +@SuppressWarnings({"ProhibitedExceptionDeclared"}) +public class GridSwapSpaceSpiConsistencySelfTest extends GridCommonAbstractTest { + /** */ + protected static final String GRID_WITHOUT_SWAP_SPACE = "grid-without-swap-space"; + + /** */ + protected static final String GRID_WITH_SWAP_SPACE = "grid-with-swap-space"; + + /** */ + protected static final String GRID_CLIENT_WITHOUT_SWAP_SPACE = "grid-client-without-swap-space"; + + /** */ + protected static final String GRID_CLIENT_WITH_SWAP_SPACE = "grid-client-with-swap-space"; + + /** */ + protected static final String CACHE_NAME = "TestCache"; + + /** + * + */ + public GridSwapSpaceSpiConsistencySelfTest() { + super(false); + } + + /** {@inheritDoc} */ + @SuppressWarnings({"unchecked"}) + @Override protected IgniteConfiguration getConfiguration(String gridName) throws Exception { + IgniteConfiguration cfg = super.getConfiguration(gridName); + + if (GRID_WITHOUT_SWAP_SPACE.equals(gridName)) + cfg.setSwapSpaceSpi(new NoopSwapSpaceSpi()); + + if (GRID_WITH_SWAP_SPACE.equals(gridName)) + cfg.setSwapSpaceSpi(new FileSwapSpaceSpi()); + + if (GRID_CLIENT_WITHOUT_SWAP_SPACE.equals(gridName)) { + cfg.setClientMode(true); + cfg.setSwapSpaceSpi(new NoopSwapSpaceSpi()); + } + + if (GRID_CLIENT_WITH_SWAP_SPACE.equals(gridName)) { + cfg.setClientMode(true); + cfg.setSwapSpaceSpi(new FileSwapSpaceSpi()); + } + + return cfg; + } + + /** {@inheritDoc} */ + @Override protected void afterTest() throws Exception { + stopAllGrids(); + } + + /** + * Node with swap enabled should not start after node without swap + */ + public void testServerNodeIncompatibleSwapSpaceSpi1() throws Exception { + startGrid(GRID_WITHOUT_SWAP_SPACE); + + GridTestUtils.assertThrows(log, new Callable<Object>() { + @Override public Object call() throws Exception { + return startGrid(GRID_WITH_SWAP_SPACE); + } + }, IgniteCheckedException.class, "Failed to initialize SPI context"); + } + + /** + * Node without swap should not start after node with swap enabled + */ + public void testServerNodeIncompatibleSwapSpaceSpi2() throws Exception { + startGrid(GRID_WITH_SWAP_SPACE); + + GridTestUtils.assertThrows(log, new Callable<Object>() { + @Override public Object call() throws Exception { + return startGrid(GRID_WITHOUT_SWAP_SPACE); + } + }, IgniteCheckedException.class, "Failed to initialize SPI context"); + } + + /** + * Client nodes should join to grid with any swap policy + */ + public void testClientNodeAnySwapSpaceSpi() throws Exception { + startGrid(GRID_WITHOUT_SWAP_SPACE); + + Ignite client1 = startGrid(GRID_CLIENT_WITH_SWAP_SPACE); + + Ignite client2 = startGrid(GRID_CLIENT_WITHOUT_SWAP_SPACE); + + IgniteCache<Integer, String> cache1 = client1.createCache("TestCache"); + + cache1.put(1, "one"); + + IgniteCache<Integer, String> cache2 = client2.getOrCreateCache("TestCache"); + + assert cache2.get(1).equals("one"); + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ignite/blob/89172691/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite5.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite5.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite5.java index 3eb0b13..305f5cd 100644 --- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite5.java +++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite5.java @@ -20,6 +20,7 @@ package org.apache.ignite.testsuites; import junit.framework.TestSuite; import org.apache.ignite.internal.processors.cache.CacheNearReaderUpdateTest; import org.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest; +import org.apache.ignite.internal.processors.cache.GridCacheSwapSpaceSpiConsistencySelfTest; import org.apache.ignite.internal.processors.cache.IgniteCachePutStackOverflowSelfTest; import org.apache.ignite.internal.processors.cache.IgniteCacheStoreCollectionTest; import org.apache.ignite.internal.processors.cache.store.IgniteCacheWriteBehindNoUpdateSelfTest; @@ -40,6 +41,7 @@ public class IgniteCacheTestSuite5 extends TestSuite { suite.addTestSuite(IgniteCacheStoreCollectionTest.class); suite.addTestSuite(IgniteCacheWriteBehindNoUpdateSelfTest.class); suite.addTestSuite(IgniteCachePutStackOverflowSelfTest.class); + suite.addTestSuite(GridCacheSwapSpaceSpiConsistencySelfTest.class); return suite; } http://git-wip-us.apache.org/repos/asf/ignite/blob/89172691/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteSpiSwapSpaceSelfTestSuite.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteSpiSwapSpaceSelfTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteSpiSwapSpaceSelfTestSuite.java index 6d44934..3bf1b1b 100644 --- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteSpiSwapSpaceSelfTestSuite.java +++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteSpiSwapSpaceSelfTestSuite.java @@ -21,6 +21,7 @@ import junit.framework.TestSuite; import org.apache.ignite.spi.swapspace.file.GridFileSwapCompactionSelfTest; import org.apache.ignite.spi.swapspace.file.GridFileSwapSpaceSpiSelfTest; import org.apache.ignite.spi.swapspace.noop.GridNoopSwapSpaceSpiSelfTest; +import org.apache.ignite.spi.swapspace.GridSwapSpaceSpiConsistencySelfTest; /** * @@ -36,6 +37,7 @@ public class IgniteSpiSwapSpaceSelfTestSuite { suite.addTest(new TestSuite(GridFileSwapCompactionSelfTest.class)); suite.addTest(new TestSuite(GridFileSwapSpaceSpiSelfTest.class)); suite.addTest(new TestSuite(GridNoopSwapSpaceSpiSelfTest.class)); + suite.addTest(new TestSuite(GridSwapSpaceSpiConsistencySelfTest.class)); return suite; }
