http://git-wip-us.apache.org/repos/asf/ignite/blob/cf32fc7b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheReadFromBackupTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheReadFromBackupTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheReadFromBackupTest.java index 2bb5fbb..652aba0 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheReadFromBackupTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheReadFromBackupTest.java @@ -50,6 +50,7 @@ import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest; import static org.apache.ignite.cache.CacheAtomicityMode.ATOMIC; import static org.apache.ignite.cache.CacheAtomicityMode.TRANSACTIONAL; +import static org.apache.ignite.cache.CacheAtomicityMode.TRANSACTIONAL_SNAPSHOT; import static org.apache.ignite.cache.CacheMode.PARTITIONED; import static org.apache.ignite.cache.CacheMode.REPLICATED; @@ -87,7 +88,23 @@ public class IgniteCacheReadFromBackupTest extends GridCommonAbstractTest { * @throws Exception If failed. */ public void testGetFromBackupStoreReadThroughEnabled() throws Exception { - for (CacheConfiguration<Object, Object> ccfg : cacheConfigurations()) { + checkGetFromBackupStoreReadThroughEnabled(cacheConfigurations()); + } + + /** + * @throws Exception If failed. + */ + public void testMvccGetFromBackupStoreReadThroughEnabled() throws Exception { + fail("https://issues.apache.org/jira/browse/IGNITE-10274"); + + checkGetFromBackupStoreReadThroughEnabled(mvccCacheConfigurations()); + } + + /** + * @throws Exception If failed. + */ + private void checkGetFromBackupStoreReadThroughEnabled(List<CacheConfiguration<Object, Object>> cacheCfgs) throws Exception { + for (CacheConfiguration<Object, Object> ccfg : cacheCfgs) { ccfg.setCacheStoreFactory(new TestStoreFactory()); ccfg.setReadThrough(true); @@ -131,7 +148,23 @@ public class IgniteCacheReadFromBackupTest extends GridCommonAbstractTest { * @throws Exception If failed. */ public void testGetFromBackupStoreReadThroughDisabled() throws Exception { - for (CacheConfiguration<Object, Object> ccfg : cacheConfigurations()) { + checkGetFromBackupStoreReadThroughDisabled(cacheConfigurations()); + } + + /** + * @throws Exception If failed. + */ + public void testMvccGetFromBackupStoreReadThroughDisabled() throws Exception { + fail("https://issues.apache.org/jira/browse/IGNITE-10274"); + + checkGetFromBackupStoreReadThroughDisabled(mvccCacheConfigurations()); + } + + /** + * @throws Exception If failed. + */ + private void checkGetFromBackupStoreReadThroughDisabled(List<CacheConfiguration<Object, Object>> cacheCfgs) throws Exception { + for (CacheConfiguration<Object, Object> ccfg : cacheCfgs) { ccfg.setCacheStoreFactory(new TestStoreFactory()); ccfg.setReadThrough(false); @@ -159,7 +192,23 @@ public class IgniteCacheReadFromBackupTest extends GridCommonAbstractTest { * @throws Exception If failed. */ public void testGetFromPrimaryPreloadInProgress() throws Exception { - for (final CacheConfiguration<Object, Object> ccfg : cacheConfigurations()) { + checkGetFromPrimaryPreloadInProgress(cacheConfigurations()); + } + + /** + * @throws Exception If failed. + */ + public void testMvccGetFromPrimaryPreloadInProgress() throws Exception { + fail("https://issues.apache.org/jira/browse/IGNITE-10274"); + + checkGetFromPrimaryPreloadInProgress(mvccCacheConfigurations()); + } + + /** + * @throws Exception If failed. + */ + private void checkGetFromPrimaryPreloadInProgress(List<CacheConfiguration<Object, Object>> cacheCfgs) throws Exception { + for (final CacheConfiguration<Object, Object> ccfg : cacheCfgs) { boolean near = (ccfg.getNearConfiguration() != null); log.info("Test cache [mode=" + ccfg.getCacheMode() + @@ -245,7 +294,24 @@ public class IgniteCacheReadFromBackupTest extends GridCommonAbstractTest { * @throws Exception If failed. */ public void testNoPrimaryReadPreloadFinished() throws Exception { - for (CacheConfiguration<Object, Object> ccfg : cacheConfigurations()) { + checkNoPrimaryReadPreloadFinished(cacheConfigurations()); + } + + /** + * @throws Exception If failed. + */ + public void testMvccNoPrimaryReadPreloadFinished() throws Exception { + fail("https://issues.apache.org/jira/browse/IGNITE-10274"); + + checkNoPrimaryReadPreloadFinished(mvccCacheConfigurations()); + + } + + /** + * @throws Exception If failed. + */ + private void checkNoPrimaryReadPreloadFinished(List<CacheConfiguration<Object, Object>> cacheCfgs) throws Exception { + for (CacheConfiguration<Object, Object> ccfg : cacheCfgs) { boolean near = (ccfg.getNearConfiguration() != null); log.info("Test cache [mode=" + ccfg.getCacheMode() + @@ -370,6 +436,21 @@ public class IgniteCacheReadFromBackupTest extends GridCommonAbstractTest { } /** + * @return Cache configurations to test. + */ + private List<CacheConfiguration<Object, Object>> mvccCacheConfigurations() { + List<CacheConfiguration<Object, Object>> ccfgs = new ArrayList<>(); + + ccfgs.add(cacheConfiguration(REPLICATED, TRANSACTIONAL_SNAPSHOT, 0, false)); + + ccfgs.add(cacheConfiguration(PARTITIONED, TRANSACTIONAL_SNAPSHOT, 1, false)); + ccfgs.add(cacheConfiguration(PARTITIONED, TRANSACTIONAL_SNAPSHOT, 1, true)); + ccfgs.add(cacheConfiguration(PARTITIONED, TRANSACTIONAL_SNAPSHOT, 2, false)); + + return ccfgs; + } + + /** * @param cacheMode Cache mode. * @param atomicityMode Cache atomicity mode. * @param backups Number of backups.
http://git-wip-us.apache.org/repos/asf/ignite/blob/cf32fc7b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheSingleGetMessageTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheSingleGetMessageTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheSingleGetMessageTest.java index 974bcf2..df6100b 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheSingleGetMessageTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheSingleGetMessageTest.java @@ -37,6 +37,7 @@ import org.apache.ignite.transactions.Transaction; import static org.apache.ignite.cache.CacheAtomicityMode.ATOMIC; import static org.apache.ignite.cache.CacheAtomicityMode.TRANSACTIONAL; +import static org.apache.ignite.cache.CacheAtomicityMode.TRANSACTIONAL_SNAPSHOT; import static org.apache.ignite.cache.CacheMode.PARTITIONED; import static org.apache.ignite.cache.CacheMode.REPLICATED; import static org.apache.ignite.cache.CacheWriteSynchronizationMode.FULL_SYNC; @@ -88,11 +89,25 @@ public class IgniteCacheSingleGetMessageTest extends GridCommonAbstractTest { * @throws Exception If failed. */ public void testSingleGetMessage() throws Exception { + checkSingleGetMessage(cacheConfigurations()); + } + + /** + * @throws Exception If failed. + */ + public void testMvccSingleGetMessage() throws Exception { + fail("https://issues.apache.org/jira/browse/IGNITE-7371"); + + checkSingleGetMessage(mvccCacheConfigurations()); + } + + /** + * @throws Exception If failed. + */ + public void checkSingleGetMessage(List<CacheConfiguration<Integer, Integer>> ccfgs) throws Exception { assertFalse(ignite(0).configuration().isClientMode()); assertTrue(ignite(SRVS).configuration().isClientMode()); - List<CacheConfiguration<Integer, Integer>> ccfgs = cacheConfigurations(); - for (int i = 0; i < ccfgs.size(); i++) { CacheConfiguration<Integer, Integer> ccfg = ccfgs.get(i); @@ -282,6 +297,19 @@ public class IgniteCacheSingleGetMessageTest extends GridCommonAbstractTest { } /** + * @return Mvcc cache configurations to test. + */ + private List<CacheConfiguration<Integer, Integer>> mvccCacheConfigurations() { + List<CacheConfiguration<Integer, Integer>> ccfgs = new ArrayList<>(); + + ccfgs.add(cacheConfiguration(PARTITIONED, TRANSACTIONAL_SNAPSHOT, FULL_SYNC, 0)); + ccfgs.add(cacheConfiguration(PARTITIONED, TRANSACTIONAL_SNAPSHOT, FULL_SYNC, 1)); + ccfgs.add(cacheConfiguration(REPLICATED, TRANSACTIONAL_SNAPSHOT, FULL_SYNC, 0)); + + return ccfgs; + } + + /** * @param cacheMode Cache mode. * @param atomicityMode Cache atomicity mode. * @param syncMode Write synchronization mode. @@ -297,7 +325,6 @@ public class IgniteCacheSingleGetMessageTest extends GridCommonAbstractTest { ccfg.setCacheMode(cacheMode); ccfg.setAtomicityMode(atomicityMode); - ccfg.setAtomicityMode(TRANSACTIONAL); ccfg.setWriteSynchronizationMode(syncMode); if (cacheMode == PARTITIONED) http://git-wip-us.apache.org/repos/asf/ignite/blob/cf32fc7b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteTxPreloadAbstractTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteTxPreloadAbstractTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteTxPreloadAbstractTest.java index b4af2a8..65e9f37 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteTxPreloadAbstractTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteTxPreloadAbstractTest.java @@ -32,6 +32,7 @@ import org.apache.ignite.configuration.CacheConfiguration; import org.apache.ignite.internal.IgniteInternalFuture; import org.apache.ignite.internal.processors.cache.GridCacheAbstractSelfTest; import org.apache.ignite.testframework.GridTestUtils; +import org.apache.ignite.testframework.MvccFeatureChecker; import org.apache.ignite.transactions.Transaction; import org.apache.ignite.transactions.TransactionConcurrency; import org.apache.ignite.transactions.TransactionIsolation; @@ -78,6 +79,9 @@ public abstract class IgniteTxPreloadAbstractTest extends GridCacheAbstractSelfT * @throws Exception If failed. */ public void testRemoteTxPreloading() throws Exception { + if (MvccFeatureChecker.forcedMvcc()) + fail("https://issues.apache.org/jira/browse/IGNITE-10391"); + IgniteCache<String, Integer> cache = jcache(0); for (int i = 0; i < 10_000; i++) @@ -147,13 +151,17 @@ public abstract class IgniteTxPreloadAbstractTest extends GridCacheAbstractSelfT * @throws Exception If failed. */ public void testLocalTxPreloadingOptimistic() throws Exception { - testLocalTxPreloading(OPTIMISTIC); + if (!MvccFeatureChecker.forcedMvcc()) // Do not check optimistic tx for mvcc. + testLocalTxPreloading(OPTIMISTIC); } /** * @throws Exception If failed. */ public void testLocalTxPreloadingPessimistic() throws Exception { + if (MvccFeatureChecker.forcedMvcc()) + fail("https://issues.apache.org/jira/browse/IGNITE-10391"); + testLocalTxPreloading(PESSIMISTIC); } http://git-wip-us.apache.org/repos/asf/ignite/blob/cf32fc7b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteCacheLockFailoverSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteCacheLockFailoverSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteCacheLockFailoverSelfTest.java index ab94618..2ab36f2 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteCacheLockFailoverSelfTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteCacheLockFailoverSelfTest.java @@ -33,6 +33,7 @@ import org.apache.ignite.internal.util.typedef.internal.U; import org.apache.ignite.lang.IgniteFutureTimeoutException; import org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi; import org.apache.ignite.testframework.GridTestUtils; +import org.apache.ignite.testframework.MvccFeatureChecker; /** * @@ -40,6 +41,13 @@ import org.apache.ignite.testframework.GridTestUtils; @SuppressWarnings("unchecked") public class IgniteCacheLockFailoverSelfTest extends GridCacheAbstractSelfTest { /** {@inheritDoc} */ + @Override public void setUp() throws Exception { + MvccFeatureChecker.failIfNotSupported(MvccFeatureChecker.Feature.ENTRY_LOCK); + + super.setUp(); + } + + /** {@inheritDoc} */ @Override protected int gridCount() { return 2; } http://git-wip-us.apache.org/repos/asf/ignite/blob/cf32fc7b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteCacheMultiTxLockSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteCacheMultiTxLockSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteCacheMultiTxLockSelfTest.java index bc3b13d..d7454fd 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteCacheMultiTxLockSelfTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteCacheMultiTxLockSelfTest.java @@ -22,6 +22,7 @@ import java.util.Collection; import java.util.TreeMap; import java.util.concurrent.ThreadLocalRandom; import java.util.concurrent.TimeUnit; +import org.apache.ignite.IgniteCheckedException; import org.apache.ignite.cache.eviction.lru.LruEvictionPolicy; import org.apache.ignite.configuration.CacheConfiguration; import org.apache.ignite.configuration.IgniteConfiguration; @@ -33,6 +34,7 @@ import org.apache.ignite.internal.util.typedef.internal.U; import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi; import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder; import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder; +import org.apache.ignite.testframework.MvccFeatureChecker; import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest; import static org.apache.ignite.cache.CacheAtomicityMode.TRANSACTIONAL; @@ -55,6 +57,16 @@ public class IgniteCacheMultiTxLockSelfTest extends GridCommonAbstractTest { /** */ private boolean client; + /** Unexpected lock error. */ + private volatile Throwable err; + + /** {@inheritDoc} */ + @Override public void setUp() throws Exception { + MvccFeatureChecker.failIfNotSupported(MvccFeatureChecker.Feature.ENTRY_LOCK); + + super.setUp(); + } + /** {@inheritDoc} */ @Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception { IgniteConfiguration c = super.getConfiguration(igniteInstanceName); @@ -120,6 +132,8 @@ public class IgniteCacheMultiTxLockSelfTest extends GridCommonAbstractTest { public void checkExplicitLock(int keys, boolean testClient) throws Exception { Collection<Thread> threads = new ArrayList<>(); + err = null; + try { // Start grid 1. IgniteEx grid1 = startGrid(1); @@ -171,6 +185,8 @@ public class IgniteCacheMultiTxLockSelfTest extends GridCommonAbstractTest { assertEquals("txMap is not empty:" + i, 0, tm.idMapSize()); } + + assertNull(err); } finally { stopAllGrids(); @@ -214,7 +230,7 @@ public class IgniteCacheMultiTxLockSelfTest extends GridCommonAbstractTest { else cache.removeAll(vals.keySet()); } - catch (Exception e) { + catch (IgniteCheckedException e) { U.error(log(), "Failed cache operation.", e); } finally { @@ -223,8 +239,12 @@ public class IgniteCacheMultiTxLockSelfTest extends GridCommonAbstractTest { U.sleep(100); } - catch (Exception e){ + catch (Throwable e){ U.error(log(), "Failed unlock.", e); + + err = e; + + return; } } } http://git-wip-us.apache.org/repos/asf/ignite/blob/cf32fc7b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteCrossCacheMvccTxSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteCrossCacheMvccTxSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteCrossCacheMvccTxSelfTest.java new file mode 100644 index 0000000..63a255e --- /dev/null +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteCrossCacheMvccTxSelfTest.java @@ -0,0 +1,39 @@ +/* + * 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.distributed.dht; + +import org.apache.ignite.cache.CacheAtomicityMode; + +import static org.apache.ignite.transactions.TransactionConcurrency.PESSIMISTIC; +import static org.apache.ignite.transactions.TransactionIsolation.REPEATABLE_READ; + +/** + * + */ +public class IgniteCrossCacheMvccTxSelfTest extends IgniteCrossCacheTxAbstractSelfTest { + /** {@inheritDoc} */ + @Override public CacheAtomicityMode atomicityMode() { + return CacheAtomicityMode.TRANSACTIONAL_SNAPSHOT; + } + + /** + * @throws Exception If failed. + */ + public void testPessimisticRepeatableRead() throws Exception { + checkTxsSingleOp(PESSIMISTIC, REPEATABLE_READ); + } +} http://git-wip-us.apache.org/repos/asf/ignite/blob/cf32fc7b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteCrossCacheTxAbstractSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteCrossCacheTxAbstractSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteCrossCacheTxAbstractSelfTest.java new file mode 100644 index 0000000..5224daf --- /dev/null +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteCrossCacheTxAbstractSelfTest.java @@ -0,0 +1,181 @@ +/* + * 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.distributed.dht; + +import java.util.HashMap; +import java.util.Map; +import java.util.concurrent.ThreadLocalRandom; +import org.apache.ignite.IgniteCache; +import org.apache.ignite.cache.CacheAtomicityMode; +import org.apache.ignite.cluster.ClusterNode; +import org.apache.ignite.configuration.CacheConfiguration; +import org.apache.ignite.configuration.IgniteConfiguration; +import org.apache.ignite.configuration.NearCacheConfiguration; +import org.apache.ignite.internal.IgniteEx; +import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi; +import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder; +import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder; +import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest; +import org.apache.ignite.transactions.Transaction; +import org.apache.ignite.transactions.TransactionConcurrency; +import org.apache.ignite.transactions.TransactionIsolation; + +import static org.apache.ignite.cache.CacheWriteSynchronizationMode.FULL_SYNC; + +/** + * Tests specific combinations of cross-cache transactions. + */ +public abstract class IgniteCrossCacheTxAbstractSelfTest extends GridCommonAbstractTest { + /** */ + private static final TcpDiscoveryIpFinder IP_FINDER = new TcpDiscoveryVmIpFinder(true); + + /** */ + private static final String FIRST_CACHE = "FirstCache"; + + /** */ + private static final String SECOND_CACHE = "SecondCache"; + + /** */ + private static final int TX_CNT = 500; + + /** {@inheritDoc} */ + @Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception { + IgniteConfiguration cfg = super.getConfiguration(igniteInstanceName); + + ((TcpDiscoverySpi)cfg.getDiscoverySpi()).setIpFinder(IP_FINDER); + + return cfg; + } + + /** + * @return Node count for this test. + */ + private int nodeCount() { + return 4; + } + + /** + * @return {@code True} if near cache should be enabled. + */ + protected boolean nearEnabled() { + return false; + } + + /** {@inheritDoc} */ + @SuppressWarnings("unchecked") + @Override protected void beforeTestsStarted() throws Exception { + startGridsMultiThreaded(nodeCount()); + + CacheConfiguration firstCfg = new CacheConfiguration(FIRST_CACHE); + firstCfg.setBackups(1); + firstCfg.setAtomicityMode(atomicityMode()); + firstCfg.setWriteSynchronizationMode(FULL_SYNC); + + grid(0).createCache(firstCfg); + + CacheConfiguration secondCfg = new CacheConfiguration(SECOND_CACHE); + secondCfg.setBackups(1); + secondCfg.setAtomicityMode(atomicityMode()); + secondCfg.setWriteSynchronizationMode(FULL_SYNC); + + if (nearEnabled()) + secondCfg.setNearConfiguration(new NearCacheConfiguration()); + + grid(0).createCache(secondCfg); + } + + /** + * @return Atomicity mode. + */ + public abstract CacheAtomicityMode atomicityMode(); + + /** + * @param concurrency Concurrency. + * @param isolation Isolation. + * @throws Exception If failed. + */ + protected void checkTxsSingleOp(TransactionConcurrency concurrency, TransactionIsolation isolation) throws Exception { + Map<Integer, String> firstCheck = new HashMap<>(); + Map<Integer, String> secondCheck = new HashMap<>(); + + for (int i = 0; i < TX_CNT; i++) { + int grid = ThreadLocalRandom.current().nextInt(nodeCount()); + + IgniteCache<Integer, String> first = grid(grid).cache(FIRST_CACHE); + IgniteCache<Integer, String> second = grid(grid).cache(SECOND_CACHE); + + try (Transaction tx = grid(grid).transactions().txStart(concurrency, isolation)) { + try { + int size = ThreadLocalRandom.current().nextInt(24) + 1; + + for (int k = 0; k < size; k++) { + boolean rnd = ThreadLocalRandom.current().nextBoolean(); + + IgniteCache<Integer, String> cache = rnd ? first : second; + Map<Integer, String> check = rnd ? firstCheck : secondCheck; + + String val = rnd ? "first" + i : "second" + i; + + cache.put(k, val); + check.put(k, val); + } + + tx.commit(); + } + catch (Throwable e) { + e.printStackTrace(); + + throw e; + } + } + + if (i > 0 && i % 100 == 0) + info("Finished iteration: " + i); + } + + for (int g = 0; g < nodeCount(); g++) { + IgniteEx grid = grid(g); + + assertEquals(0, grid.context().cache().context().tm().idMapSize()); + + ClusterNode locNode = grid.localNode(); + + IgniteCache<Object, Object> firstCache = grid.cache(FIRST_CACHE); + + for (Map.Entry<Integer, String> entry : firstCheck.entrySet()) { + boolean primary = grid.affinity(FIRST_CACHE).isPrimary(locNode, entry.getKey()); + + boolean backup = grid.affinity(FIRST_CACHE).isBackup(locNode, entry.getKey()); + + assertEquals("Invalid value found first cache [primary=" + primary + ", backup=" + backup + + ", node=" + locNode.id() + ", key=" + entry.getKey() + ']', + entry.getValue(), firstCache.get(entry.getKey())); + } + + for (Map.Entry<Integer, String> entry : secondCheck.entrySet()) { + boolean primary = grid.affinity(SECOND_CACHE).isPrimary(locNode, entry.getKey()); + + boolean backup = grid.affinity(SECOND_CACHE).isBackup(locNode, entry.getKey()); + + assertEquals("Invalid value found second cache [primary=" + primary + ", backup=" + backup + + ", node=" + locNode.id() + ", key=" + entry.getKey() + ']', + entry.getValue(), grid.cache(SECOND_CACHE).get(entry.getKey())); + } + } + } +} http://git-wip-us.apache.org/repos/asf/ignite/blob/cf32fc7b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteCrossCacheTxSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteCrossCacheTxSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteCrossCacheTxSelfTest.java index 91c6685..3b0106c 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteCrossCacheTxSelfTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteCrossCacheTxSelfTest.java @@ -14,28 +14,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.apache.ignite.internal.processors.cache.distributed.dht; -import java.util.HashMap; -import java.util.Map; -import java.util.concurrent.ThreadLocalRandom; -import org.apache.ignite.IgniteCache; -import org.apache.ignite.cluster.ClusterNode; -import org.apache.ignite.configuration.CacheConfiguration; -import org.apache.ignite.configuration.IgniteConfiguration; -import org.apache.ignite.configuration.NearCacheConfiguration; -import org.apache.ignite.internal.IgniteEx; -import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi; -import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder; -import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder; -import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest; -import org.apache.ignite.transactions.Transaction; -import org.apache.ignite.transactions.TransactionConcurrency; -import org.apache.ignite.transactions.TransactionIsolation; +import org.apache.ignite.cache.CacheAtomicityMode; -import static org.apache.ignite.cache.CacheAtomicityMode.TRANSACTIONAL; -import static org.apache.ignite.cache.CacheWriteSynchronizationMode.FULL_SYNC; import static org.apache.ignite.transactions.TransactionConcurrency.OPTIMISTIC; import static org.apache.ignite.transactions.TransactionConcurrency.PESSIMISTIC; import static org.apache.ignite.transactions.TransactionIsolation.READ_COMMITTED; @@ -43,65 +25,12 @@ import static org.apache.ignite.transactions.TransactionIsolation.REPEATABLE_REA import static org.apache.ignite.transactions.TransactionIsolation.SERIALIZABLE; /** - * Tests specific combinations of cross-cache transactions. + * */ -public class IgniteCrossCacheTxSelfTest extends GridCommonAbstractTest { - /** */ - private static final TcpDiscoveryIpFinder IP_FINDER = new TcpDiscoveryVmIpFinder(true); - - /** */ - private static final String FIRST_CACHE = "FirstCache"; - - /** */ - private static final String SECOND_CACHE = "SecondCache"; - - /** */ - private static final int TX_CNT = 500; - - /** {@inheritDoc} */ - @Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception { - IgniteConfiguration cfg = super.getConfiguration(igniteInstanceName); - - ((TcpDiscoverySpi)cfg.getDiscoverySpi()).setIpFinder(IP_FINDER); - - return cfg; - } - - /** - * @return Node count for this test. - */ - private int nodeCount() { - return 4; - } - - /** - * @return {@code True} if near cache should be enabled. - */ - protected boolean nearEnabled() { - return false; - } - +public class IgniteCrossCacheTxSelfTest extends IgniteCrossCacheTxAbstractSelfTest { /** {@inheritDoc} */ - @SuppressWarnings("unchecked") - @Override protected void beforeTestsStarted() throws Exception { - startGridsMultiThreaded(nodeCount()); - - CacheConfiguration firstCfg = new CacheConfiguration(FIRST_CACHE); - firstCfg.setBackups(1); - firstCfg.setAtomicityMode(TRANSACTIONAL); - firstCfg.setWriteSynchronizationMode(FULL_SYNC); - - grid(0).createCache(firstCfg); - - CacheConfiguration secondCfg = new CacheConfiguration(SECOND_CACHE); - secondCfg.setBackups(1); - secondCfg.setAtomicityMode(TRANSACTIONAL); - secondCfg.setWriteSynchronizationMode(FULL_SYNC); - - if (nearEnabled()) - secondCfg.setNearConfiguration(new NearCacheConfiguration()); - - grid(0).createCache(secondCfg); + @Override public CacheAtomicityMode atomicityMode() { + return CacheAtomicityMode.TRANSACTIONAL; } /** @@ -139,78 +68,4 @@ public class IgniteCrossCacheTxSelfTest extends GridCommonAbstractTest { checkTxsSingleOp(OPTIMISTIC, SERIALIZABLE); } - /** - * @param concurrency Concurrency. - * @param isolation Isolation. - * @throws Exception If failed. - */ - private void checkTxsSingleOp(TransactionConcurrency concurrency, TransactionIsolation isolation) throws Exception { - Map<Integer, String> firstCheck = new HashMap<>(); - Map<Integer, String> secondCheck = new HashMap<>(); - - for (int i = 0; i < TX_CNT; i++) { - int grid = ThreadLocalRandom.current().nextInt(nodeCount()); - - IgniteCache<Integer, String> first = grid(grid).cache(FIRST_CACHE); - IgniteCache<Integer, String> second = grid(grid).cache(SECOND_CACHE); - - try (Transaction tx = grid(grid).transactions().txStart(concurrency, isolation)) { - try { - int size = ThreadLocalRandom.current().nextInt(24) + 1; - - for (int k = 0; k < size; k++) { - boolean rnd = ThreadLocalRandom.current().nextBoolean(); - - IgniteCache<Integer, String> cache = rnd ? first : second; - Map<Integer, String> check = rnd ? firstCheck : secondCheck; - - String val = rnd ? "first" + i : "second" + i; - - cache.put(k, val); - check.put(k, val); - } - - tx.commit(); - } - catch (Throwable e) { - e.printStackTrace(); - - throw e; - } - } - - if (i > 0 && i % 100 == 0) - info("Finished iteration: " + i); - } - - for (int g = 0; g < nodeCount(); g++) { - IgniteEx grid = grid(g); - - assertEquals(0, grid.context().cache().context().tm().idMapSize()); - - ClusterNode locNode = grid.localNode(); - - IgniteCache<Object, Object> firstCache = grid.cache(FIRST_CACHE); - - for (Map.Entry<Integer, String> entry : firstCheck.entrySet()) { - boolean primary = grid.affinity(FIRST_CACHE).isPrimary(locNode, entry.getKey()); - - boolean backup = grid.affinity(FIRST_CACHE).isBackup(locNode, entry.getKey()); - - assertEquals("Invalid value found first cache [primary=" + primary + ", backup=" + backup + - ", node=" + locNode.id() + ", key=" + entry.getKey() + ']', - entry.getValue(), firstCache.get(entry.getKey())); - } - - for (Map.Entry<Integer, String> entry : secondCheck.entrySet()) { - boolean primary = grid.affinity(SECOND_CACHE).isPrimary(locNode, entry.getKey()); - - boolean backup = grid.affinity(SECOND_CACHE).isBackup(locNode, entry.getKey()); - - assertEquals("Invalid value found second cache [primary=" + primary + ", backup=" + backup + - ", node=" + locNode.id() + ", key=" + entry.getKey() + ']', - entry.getValue(), grid.cache(SECOND_CACHE).get(entry.getKey())); - } - } - } } http://git-wip-us.apache.org/repos/asf/ignite/blob/cf32fc7b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCacheNearTxPreloadSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCacheNearTxPreloadSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCacheNearTxPreloadSelfTest.java index caf6cc7..96b932a 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCacheNearTxPreloadSelfTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCacheNearTxPreloadSelfTest.java @@ -21,6 +21,7 @@ import org.apache.ignite.cache.CacheMode; import org.apache.ignite.configuration.CacheConfiguration; import org.apache.ignite.configuration.NearCacheConfiguration; import org.apache.ignite.internal.processors.cache.distributed.IgniteTxPreloadAbstractTest; +import org.apache.ignite.testframework.MvccFeatureChecker; import static org.apache.ignite.cache.CacheMode.PARTITIONED; @@ -29,6 +30,13 @@ import static org.apache.ignite.cache.CacheMode.PARTITIONED; */ public class GridCacheNearTxPreloadSelfTest extends IgniteTxPreloadAbstractTest { /** {@inheritDoc} */ + @Override public void setUp() throws Exception { + MvccFeatureChecker.failIfNotSupported(MvccFeatureChecker.Feature.NEAR_CACHE); + + super.setUp(); + } + + /** {@inheritDoc} */ @Override protected CacheMode cacheMode() { return PARTITIONED; } http://git-wip-us.apache.org/repos/asf/ignite/blob/cf32fc7b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCachePartitionedEventSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCachePartitionedEventSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCachePartitionedEventSelfTest.java index 1c79db7..54eb32d 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCachePartitionedEventSelfTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCachePartitionedEventSelfTest.java @@ -21,6 +21,7 @@ import org.apache.ignite.cache.CacheWriteSynchronizationMode; import org.apache.ignite.configuration.CacheConfiguration; import org.apache.ignite.configuration.NearCacheConfiguration; import org.apache.ignite.internal.processors.cache.distributed.GridCacheEventAbstractTest; +import org.apache.ignite.testframework.MvccFeatureChecker; import static org.apache.ignite.cache.CacheAtomicityMode.TRANSACTIONAL; import static org.apache.ignite.cache.CacheMode.PARTITIONED; @@ -31,6 +32,13 @@ import static org.apache.ignite.cache.CacheRebalanceMode.SYNC; */ public class GridCachePartitionedEventSelfTest extends GridCacheEventAbstractTest { /** {@inheritDoc} */ + @Override public void setUp() throws Exception { + MvccFeatureChecker.failIfNotSupported(MvccFeatureChecker.Feature.CACHE_EVENTS); + + super.setUp(); + } + + /** {@inheritDoc} */ @Override protected CacheConfiguration cacheConfiguration(String igniteInstanceName) throws Exception { CacheConfiguration cfg = defaultCacheConfiguration(); http://git-wip-us.apache.org/repos/asf/ignite/blob/cf32fc7b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/IgniteCacheNearOnlyTxTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/IgniteCacheNearOnlyTxTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/IgniteCacheNearOnlyTxTest.java index ca12a99..d86fa91 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/IgniteCacheNearOnlyTxTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/IgniteCacheNearOnlyTxTest.java @@ -29,6 +29,7 @@ import org.apache.ignite.configuration.NearCacheConfiguration; import org.apache.ignite.internal.IgniteInternalFuture; import org.apache.ignite.internal.processors.cache.IgniteCacheAbstractTest; import org.apache.ignite.testframework.GridTestUtils; +import org.apache.ignite.testframework.MvccFeatureChecker; import org.apache.ignite.transactions.Transaction; import static org.apache.ignite.cache.CacheAtomicityMode.TRANSACTIONAL; @@ -41,6 +42,13 @@ import static org.apache.ignite.transactions.TransactionIsolation.REPEATABLE_REA */ public class IgniteCacheNearOnlyTxTest extends IgniteCacheAbstractTest { /** {@inheritDoc} */ + @Override public void setUp() throws Exception { + MvccFeatureChecker.failIfNotSupported(MvccFeatureChecker.Feature.NEAR_CACHE); + + super.setUp(); + } + + /** {@inheritDoc} */ @Override protected int gridCount() { return 2; } http://git-wip-us.apache.org/repos/asf/ignite/blob/cf32fc7b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/IgniteCacheNearReadCommittedTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/IgniteCacheNearReadCommittedTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/IgniteCacheNearReadCommittedTest.java index ad9bce0..76f0d17 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/IgniteCacheNearReadCommittedTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/IgniteCacheNearReadCommittedTest.java @@ -22,6 +22,7 @@ import org.apache.ignite.cache.CacheMode; import org.apache.ignite.cache.CachePeekMode; import org.apache.ignite.configuration.NearCacheConfiguration; import org.apache.ignite.internal.processors.cache.GridCacheAbstractSelfTest; +import org.apache.ignite.testframework.MvccFeatureChecker; import org.apache.ignite.transactions.Transaction; import static org.apache.ignite.cache.CacheMode.PARTITIONED; @@ -34,6 +35,13 @@ import static org.apache.ignite.transactions.TransactionIsolation.READ_COMMITTED @SuppressWarnings("RedundantMethodOverride") public class IgniteCacheNearReadCommittedTest extends GridCacheAbstractSelfTest { /** {@inheritDoc} */ + @Override public void setUp() throws Exception { + MvccFeatureChecker.failIfNotSupported(MvccFeatureChecker.Feature.NEAR_CACHE); + + super.setUp(); + } + + /** {@inheritDoc} */ @Override protected int gridCount() { return 2; } http://git-wip-us.apache.org/repos/asf/ignite/blob/cf32fc7b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheLoadAllAbstractTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheLoadAllAbstractTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheLoadAllAbstractTest.java index 6b4f976..3d9b7bd 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheLoadAllAbstractTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheLoadAllAbstractTest.java @@ -22,6 +22,7 @@ import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; import javax.cache.Cache; import javax.cache.configuration.Factory; import javax.cache.integration.CacheLoader; @@ -34,7 +35,7 @@ import org.apache.ignite.cache.affinity.Affinity; import org.apache.ignite.cluster.ClusterNode; import org.apache.ignite.configuration.CacheConfiguration; import org.apache.ignite.internal.processors.cache.IgniteCacheAbstractTest; -import java.util.concurrent.ConcurrentHashMap; +import org.apache.ignite.testframework.MvccFeatureChecker; /** * Test for {@link Cache#loadAll(Set, boolean, CompletionListener)}. @@ -47,6 +48,13 @@ public abstract class IgniteCacheLoadAllAbstractTest extends IgniteCacheAbstract private static ConcurrentHashMap<Object, Object> storeMap; /** {@inheritDoc} */ + @Override public void setUp() throws Exception { + MvccFeatureChecker.failIfNotSupported(MvccFeatureChecker.Feature.CACHE_STORE); + + super.setUp(); + } + + /** {@inheritDoc} */ @SuppressWarnings("unchecked") @Override protected CacheConfiguration cacheConfiguration(String igniteInstanceName) throws Exception { CacheConfiguration ccfg = super.cacheConfiguration(igniteInstanceName); http://git-wip-us.apache.org/repos/asf/ignite/blob/cf32fc7b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheTxLoaderWriterTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheTxLoaderWriterTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheTxLoaderWriterTest.java index fc4ec78..75a4cd9 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheTxLoaderWriterTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheTxLoaderWriterTest.java @@ -20,6 +20,7 @@ package org.apache.ignite.internal.processors.cache.integration; import org.apache.ignite.cache.CacheAtomicityMode; import org.apache.ignite.cache.CacheMode; import org.apache.ignite.configuration.NearCacheConfiguration; +import org.apache.ignite.testframework.MvccFeatureChecker; import static org.apache.ignite.cache.CacheAtomicityMode.TRANSACTIONAL; import static org.apache.ignite.cache.CacheMode.PARTITIONED; @@ -29,6 +30,13 @@ import static org.apache.ignite.cache.CacheMode.PARTITIONED; */ public class IgniteCacheTxLoaderWriterTest extends IgniteCacheLoaderWriterAbstractTest { /** {@inheritDoc} */ + @Override public void setUp() throws Exception { + MvccFeatureChecker.failIfNotSupported(MvccFeatureChecker.Feature.CACHE_STORE); + + super.setUp(); + } + + /** {@inheritDoc} */ @Override protected int gridCount() { return 3; } http://git-wip-us.apache.org/repos/asf/ignite/blob/cf32fc7b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheTxLocalLoadAllTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheTxLocalLoadAllTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheTxLocalLoadAllTest.java index 97374bf..645a9ff 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheTxLocalLoadAllTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheTxLocalLoadAllTest.java @@ -20,6 +20,7 @@ package org.apache.ignite.internal.processors.cache.integration; import org.apache.ignite.cache.CacheAtomicityMode; import org.apache.ignite.cache.CacheMode; import org.apache.ignite.configuration.NearCacheConfiguration; +import org.apache.ignite.testframework.MvccFeatureChecker; import static org.apache.ignite.cache.CacheAtomicityMode.TRANSACTIONAL; import static org.apache.ignite.cache.CacheMode.LOCAL; @@ -29,6 +30,12 @@ import static org.apache.ignite.cache.CacheMode.LOCAL; */ public class IgniteCacheTxLocalLoadAllTest extends IgniteCacheLoadAllAbstractTest { /** {@inheritDoc} */ + @Override public void setUp() throws Exception { + MvccFeatureChecker.failIfNotSupported(MvccFeatureChecker.Feature.LOCAL_CACHE); + + super.setUp(); + } + /** {@inheritDoc} */ @Override protected int gridCount() { return 1; } http://git-wip-us.apache.org/repos/asf/ignite/blob/cf32fc7b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheTxLocalNoLoadPreviousValueTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheTxLocalNoLoadPreviousValueTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheTxLocalNoLoadPreviousValueTest.java index 686b4ca..2e52a63 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheTxLocalNoLoadPreviousValueTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheTxLocalNoLoadPreviousValueTest.java @@ -20,6 +20,7 @@ package org.apache.ignite.internal.processors.cache.integration; import org.apache.ignite.cache.CacheAtomicityMode; import org.apache.ignite.cache.CacheMode; import org.apache.ignite.configuration.NearCacheConfiguration; +import org.apache.ignite.testframework.MvccFeatureChecker; import static org.apache.ignite.cache.CacheAtomicityMode.TRANSACTIONAL; import static org.apache.ignite.cache.CacheMode.LOCAL; @@ -29,6 +30,13 @@ import static org.apache.ignite.cache.CacheMode.LOCAL; */ public class IgniteCacheTxLocalNoLoadPreviousValueTest extends IgniteCacheNoLoadPreviousValueAbstractTest { /** {@inheritDoc} */ + @Override public void setUp() throws Exception { + MvccFeatureChecker.failIfNotSupported(MvccFeatureChecker.Feature.LOCAL_CACHE); + + super.setUp(); + } + + /** {@inheritDoc} */ @Override protected int gridCount() { return 1; } http://git-wip-us.apache.org/repos/asf/ignite/blob/cf32fc7b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheTxLocalNoReadThroughTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheTxLocalNoReadThroughTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheTxLocalNoReadThroughTest.java index 5235c9d..e25a965 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheTxLocalNoReadThroughTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheTxLocalNoReadThroughTest.java @@ -20,6 +20,7 @@ package org.apache.ignite.internal.processors.cache.integration; import org.apache.ignite.cache.CacheAtomicityMode; import org.apache.ignite.cache.CacheMode; import org.apache.ignite.configuration.NearCacheConfiguration; +import org.apache.ignite.testframework.MvccFeatureChecker; import static org.apache.ignite.cache.CacheAtomicityMode.TRANSACTIONAL; import static org.apache.ignite.cache.CacheMode.LOCAL; @@ -29,6 +30,13 @@ import static org.apache.ignite.cache.CacheMode.LOCAL; */ public class IgniteCacheTxLocalNoReadThroughTest extends IgniteCacheNoReadThroughAbstractTest { /** {@inheritDoc} */ + @Override public void setUp() throws Exception { + MvccFeatureChecker.failIfNotSupported(MvccFeatureChecker.Feature.LOCAL_CACHE); + + super.setUp(); + } + + /** {@inheritDoc} */ @Override protected int gridCount() { return 1; } http://git-wip-us.apache.org/repos/asf/ignite/blob/cf32fc7b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheTxLocalNoWriteThroughTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheTxLocalNoWriteThroughTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheTxLocalNoWriteThroughTest.java index 7985c57..ddc9352 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheTxLocalNoWriteThroughTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheTxLocalNoWriteThroughTest.java @@ -20,6 +20,7 @@ package org.apache.ignite.internal.processors.cache.integration; import org.apache.ignite.cache.CacheAtomicityMode; import org.apache.ignite.cache.CacheMode; import org.apache.ignite.configuration.NearCacheConfiguration; +import org.apache.ignite.testframework.MvccFeatureChecker; import static org.apache.ignite.cache.CacheAtomicityMode.TRANSACTIONAL; import static org.apache.ignite.cache.CacheMode.LOCAL; @@ -29,6 +30,13 @@ import static org.apache.ignite.cache.CacheMode.LOCAL; */ public class IgniteCacheTxLocalNoWriteThroughTest extends IgniteCacheNoWriteThroughAbstractTest { /** {@inheritDoc} */ + @Override public void setUp() throws Exception { + MvccFeatureChecker.failIfNotSupported(MvccFeatureChecker.Feature.LOCAL_CACHE); + + super.setUp(); + } + + /** {@inheritDoc} */ @Override protected int gridCount() { return 1; } http://git-wip-us.apache.org/repos/asf/ignite/blob/cf32fc7b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheTxNearEnabledNoLoadPreviousValueTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheTxNearEnabledNoLoadPreviousValueTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheTxNearEnabledNoLoadPreviousValueTest.java index ce42e39..c343402 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheTxNearEnabledNoLoadPreviousValueTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheTxNearEnabledNoLoadPreviousValueTest.java @@ -18,12 +18,20 @@ package org.apache.ignite.internal.processors.cache.integration; import org.apache.ignite.configuration.NearCacheConfiguration; +import org.apache.ignite.testframework.MvccFeatureChecker; /** * */ public class IgniteCacheTxNearEnabledNoLoadPreviousValueTest extends IgniteCacheTxNoLoadPreviousValueTest { /** {@inheritDoc} */ + @Override public void setUp() throws Exception { + MvccFeatureChecker.failIfNotSupported(MvccFeatureChecker.Feature.NEAR_CACHE); + + super.setUp(); + } + + /** {@inheritDoc} */ @Override protected NearCacheConfiguration nearConfiguration() { return new NearCacheConfiguration(); } http://git-wip-us.apache.org/repos/asf/ignite/blob/cf32fc7b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheTxNearEnabledNoWriteThroughTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheTxNearEnabledNoWriteThroughTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheTxNearEnabledNoWriteThroughTest.java index ea12cce..be9bc34 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheTxNearEnabledNoWriteThroughTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheTxNearEnabledNoWriteThroughTest.java @@ -18,12 +18,20 @@ package org.apache.ignite.internal.processors.cache.integration; import org.apache.ignite.configuration.NearCacheConfiguration; +import org.apache.ignite.testframework.MvccFeatureChecker; /** * */ public class IgniteCacheTxNearEnabledNoWriteThroughTest extends IgniteCacheTxNoWriteThroughTest { /** {@inheritDoc} */ + @Override public void setUp() throws Exception { + MvccFeatureChecker.failIfNotSupported(MvccFeatureChecker.Feature.NEAR_CACHE); + + super.setUp(); + } + + /** {@inheritDoc} */ @Override protected NearCacheConfiguration nearConfiguration() { return new NearCacheConfiguration(); } http://git-wip-us.apache.org/repos/asf/ignite/blob/cf32fc7b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheTxNoLoadPreviousValueTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheTxNoLoadPreviousValueTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheTxNoLoadPreviousValueTest.java index ce9ef9b..094aa1a 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheTxNoLoadPreviousValueTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheTxNoLoadPreviousValueTest.java @@ -20,6 +20,7 @@ package org.apache.ignite.internal.processors.cache.integration; import org.apache.ignite.cache.CacheAtomicityMode; import org.apache.ignite.cache.CacheMode; import org.apache.ignite.configuration.NearCacheConfiguration; +import org.apache.ignite.testframework.MvccFeatureChecker; import static org.apache.ignite.cache.CacheAtomicityMode.TRANSACTIONAL; import static org.apache.ignite.cache.CacheMode.PARTITIONED; @@ -29,6 +30,13 @@ import static org.apache.ignite.cache.CacheMode.PARTITIONED; */ public class IgniteCacheTxNoLoadPreviousValueTest extends IgniteCacheNoLoadPreviousValueAbstractTest { /** {@inheritDoc} */ + @Override public void setUp() throws Exception { + MvccFeatureChecker.failIfNotSupported(MvccFeatureChecker.Feature.CACHE_STORE); + + super.setUp(); + } + + /** {@inheritDoc} */ @Override protected int gridCount() { return 3; } http://git-wip-us.apache.org/repos/asf/ignite/blob/cf32fc7b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheTxNoReadThroughTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheTxNoReadThroughTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheTxNoReadThroughTest.java index 90bc768..a94caff 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheTxNoReadThroughTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheTxNoReadThroughTest.java @@ -20,6 +20,7 @@ package org.apache.ignite.internal.processors.cache.integration; import org.apache.ignite.cache.CacheAtomicityMode; import org.apache.ignite.cache.CacheMode; import org.apache.ignite.configuration.NearCacheConfiguration; +import org.apache.ignite.testframework.MvccFeatureChecker; import static org.apache.ignite.cache.CacheAtomicityMode.TRANSACTIONAL; import static org.apache.ignite.cache.CacheMode.PARTITIONED; @@ -29,6 +30,13 @@ import static org.apache.ignite.cache.CacheMode.PARTITIONED; */ public class IgniteCacheTxNoReadThroughTest extends IgniteCacheNoReadThroughAbstractTest { /** {@inheritDoc} */ + @Override public void setUp() throws Exception { + MvccFeatureChecker.failIfNotSupported(MvccFeatureChecker.Feature.CACHE_STORE); + + super.setUp(); + } + + /** {@inheritDoc} */ @Override protected int gridCount() { return 3; } http://git-wip-us.apache.org/repos/asf/ignite/blob/cf32fc7b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheTxNoWriteThroughTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheTxNoWriteThroughTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheTxNoWriteThroughTest.java index 325d969..e984dfb 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheTxNoWriteThroughTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheTxNoWriteThroughTest.java @@ -20,6 +20,7 @@ package org.apache.ignite.internal.processors.cache.integration; import org.apache.ignite.cache.CacheAtomicityMode; import org.apache.ignite.cache.CacheMode; import org.apache.ignite.configuration.NearCacheConfiguration; +import org.apache.ignite.testframework.MvccFeatureChecker; import static org.apache.ignite.cache.CacheAtomicityMode.TRANSACTIONAL; import static org.apache.ignite.cache.CacheMode.PARTITIONED; @@ -29,6 +30,13 @@ import static org.apache.ignite.cache.CacheMode.PARTITIONED; */ public class IgniteCacheTxNoWriteThroughTest extends IgniteCacheNoWriteThroughAbstractTest { /** {@inheritDoc} */ + @Override public void setUp() throws Exception { + MvccFeatureChecker.failIfNotSupported(MvccFeatureChecker.Feature.CACHE_STORE); + + super.setUp(); + } + + /** {@inheritDoc} */ @Override protected int gridCount() { return 3; } http://git-wip-us.apache.org/repos/asf/ignite/blob/cf32fc7b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheTxStoreSessionTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheTxStoreSessionTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheTxStoreSessionTest.java index b9e884b..77f54af 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheTxStoreSessionTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheTxStoreSessionTest.java @@ -25,6 +25,7 @@ import org.apache.ignite.cache.CacheAtomicityMode; import org.apache.ignite.cache.CacheMode; import org.apache.ignite.configuration.NearCacheConfiguration; import org.apache.ignite.internal.util.typedef.F; +import org.apache.ignite.testframework.MvccFeatureChecker; import org.apache.ignite.transactions.Transaction; import org.apache.ignite.transactions.TransactionConcurrency; import org.apache.ignite.transactions.TransactionIsolation; @@ -39,6 +40,13 @@ import static org.apache.ignite.transactions.TransactionIsolation.REPEATABLE_REA */ public class IgniteCacheTxStoreSessionTest extends IgniteCacheStoreSessionAbstractTest { /** {@inheritDoc} */ + @Override public void setUp() throws Exception { + MvccFeatureChecker.failIfNotSupported(MvccFeatureChecker.Feature.CACHE_STORE); + + super.setUp(); + } + + /** {@inheritDoc} */ @Override protected int gridCount() { return 3; } http://git-wip-us.apache.org/repos/asf/ignite/blob/cf32fc7b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheTxStoreSessionWriteBehindCoalescingTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheTxStoreSessionWriteBehindCoalescingTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheTxStoreSessionWriteBehindCoalescingTest.java index a90b4f1..ea2b8a3 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheTxStoreSessionWriteBehindCoalescingTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheTxStoreSessionWriteBehindCoalescingTest.java @@ -22,6 +22,7 @@ import javax.cache.Cache; import javax.cache.integration.CacheWriterException; import org.apache.ignite.cache.CacheAtomicityMode; import org.apache.ignite.configuration.CacheConfiguration; +import org.apache.ignite.testframework.MvccFeatureChecker; import static org.apache.ignite.cache.CacheAtomicityMode.TRANSACTIONAL; @@ -31,6 +32,13 @@ import static org.apache.ignite.cache.CacheAtomicityMode.TRANSACTIONAL; */ public class IgniteCacheTxStoreSessionWriteBehindCoalescingTest extends IgniteCacheStoreSessionWriteBehindAbstractTest { /** {@inheritDoc} */ + @Override public void setUp() throws Exception { + MvccFeatureChecker.failIfNotSupported(MvccFeatureChecker.Feature.CACHE_STORE); + + super.setUp(); + } + + /** {@inheritDoc} */ @Override protected CacheAtomicityMode atomicityMode() { return TRANSACTIONAL; } http://git-wip-us.apache.org/repos/asf/ignite/blob/cf32fc7b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheTxStoreSessionWriteBehindTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheTxStoreSessionWriteBehindTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheTxStoreSessionWriteBehindTest.java index b72aba3..ae6bcae 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheTxStoreSessionWriteBehindTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheTxStoreSessionWriteBehindTest.java @@ -18,6 +18,7 @@ package org.apache.ignite.internal.processors.cache.integration; import org.apache.ignite.cache.CacheAtomicityMode; +import org.apache.ignite.testframework.MvccFeatureChecker; import static org.apache.ignite.cache.CacheAtomicityMode.TRANSACTIONAL; @@ -26,6 +27,13 @@ import static org.apache.ignite.cache.CacheAtomicityMode.TRANSACTIONAL; */ public class IgniteCacheTxStoreSessionWriteBehindTest extends IgniteCacheStoreSessionWriteBehindAbstractTest { /** {@inheritDoc} */ + @Override public void setUp() throws Exception { + MvccFeatureChecker.failIfNotSupported(MvccFeatureChecker.Feature.CACHE_STORE); + + super.setUp(); + } + + /** {@inheritDoc} */ @Override protected CacheAtomicityMode atomicityMode() { return TRANSACTIONAL; } http://git-wip-us.apache.org/repos/asf/ignite/blob/cf32fc7b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/version/CacheVersionedEntryLocalTransactionalSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/version/CacheVersionedEntryLocalTransactionalSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/version/CacheVersionedEntryLocalTransactionalSelfTest.java index d7fc938..b217703 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/version/CacheVersionedEntryLocalTransactionalSelfTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/version/CacheVersionedEntryLocalTransactionalSelfTest.java @@ -19,6 +19,7 @@ package org.apache.ignite.internal.processors.cache.version; import org.apache.ignite.cache.CacheAtomicityMode; import org.apache.ignite.cache.CacheMode; +import org.apache.ignite.testframework.MvccFeatureChecker; /** * @@ -38,4 +39,12 @@ public class CacheVersionedEntryLocalTransactionalSelfTest extends CacheVersione @Override protected CacheAtomicityMode atomicityMode() { return CacheAtomicityMode.TRANSACTIONAL; } + + /** {@inheritDoc} */ + @Override public void setUp() throws Exception { + MvccFeatureChecker.failIfNotSupported(MvccFeatureChecker.Feature.LOCAL_CACHE); + + super.setUp(); + } + } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ignite/blob/cf32fc7b/modules/core/src/test/java/org/apache/ignite/testframework/MvccFeatureChecker.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/testframework/MvccFeatureChecker.java b/modules/core/src/test/java/org/apache/ignite/testframework/MvccFeatureChecker.java index 183c2eb..c70d447 100644 --- a/modules/core/src/test/java/org/apache/ignite/testframework/MvccFeatureChecker.java +++ b/modules/core/src/test/java/org/apache/ignite/testframework/MvccFeatureChecker.java @@ -19,10 +19,15 @@ package org.apache.ignite.testframework; import org.apache.ignite.IgniteSystemProperties; import org.apache.ignite.cache.CacheMode; +import org.apache.ignite.internal.processors.query.IgniteSQLException; +import org.apache.ignite.internal.util.typedef.X; import org.apache.ignite.transactions.TransactionConcurrency; import org.apache.ignite.transactions.TransactionIsolation; import static org.apache.ignite.IgniteSystemProperties.IGNITE_FORCE_MVCC_MODE_IN_TESTS; +import static org.apache.ignite.internal.processors.cache.query.IgniteQueryErrorCode.TRANSACTION_SERIALIZATION_ERROR; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; import static org.junit.Assert.fail; /** @@ -107,11 +112,26 @@ public class MvccFeatureChecker { } /** + * TODO proper exception handling after https://issues.apache.org/jira/browse/IGNITE-9470 + * Checks if given exception was caused by MVCC write conflict. + * + * @param e Exception. + */ + public static void assertMvccWriteConflict(Exception e) { + IgniteSQLException sqlEx = X.cause(e, IgniteSQLException.class); + + assertNotNull(sqlEx); + + assertEquals(TRANSACTION_SERIALIZATION_ERROR, sqlEx.statusCode()); + } + + /** * Fails if feature is not supported in Mvcc mode. * * @param feature Mvcc feature. * @throws AssertionError If failed. */ + @SuppressWarnings("fallthrough") private static void validateFeature(Feature feature) { switch (feature) { case NEAR_CACHE: http://git-wip-us.apache.org/repos/asf/ignite/blob/cf32fc7b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheMvccTestSuite2.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheMvccTestSuite2.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheMvccTestSuite2.java index 5818653..3c070bc 100644 --- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheMvccTestSuite2.java +++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheMvccTestSuite2.java @@ -115,6 +115,7 @@ public class IgniteCacheMvccTestSuite2 extends TestSuite { ignoredTests.add(CacheOptimisticTransactionsWithFilterSingleServerTest.class); ignoredTests.add(CacheOptimisticTransactionsWithFilterTest.class); + // Irrelevant Tx tests. ignoredTests.add(IgniteOnePhaseCommitInvokeTest.class); ignoredTests.add(IgniteOnePhaseCommitNearReadersTest.class); ignoredTests.add(GridCacheDhtPreloadOnheapSelfTest.class); http://git-wip-us.apache.org/repos/asf/ignite/blob/cf32fc7b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheMvccTestSuite4.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheMvccTestSuite4.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheMvccTestSuite4.java new file mode 100644 index 0000000..9933633 --- /dev/null +++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheMvccTestSuite4.java @@ -0,0 +1,197 @@ +/* + * 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.testsuites; + +import java.util.HashSet; +import junit.framework.TestSuite; +import org.apache.ignite.IgniteSystemProperties; +import org.apache.ignite.cache.store.CacheStoreListenerRWThroughDisabledAtomicCacheTest; +import org.apache.ignite.internal.processors.cache.CacheConnectionLeakStoreTxTest; +import org.apache.ignite.internal.processors.cache.CacheGetEntryOptimisticReadCommittedSelfTest; +import org.apache.ignite.internal.processors.cache.CacheGetEntryOptimisticRepeatableReadSelfTest; +import org.apache.ignite.internal.processors.cache.CacheGetEntryOptimisticSerializableSelfTest; +import org.apache.ignite.internal.processors.cache.CacheGetEntryPessimisticReadCommittedSelfTest; +import org.apache.ignite.internal.processors.cache.CacheGetEntryPessimisticRepeatableReadSelfTest; +import org.apache.ignite.internal.processors.cache.CacheGetEntryPessimisticSerializableSelfTest; +import org.apache.ignite.internal.processors.cache.CacheOffheapMapEntrySelfTest; +import org.apache.ignite.internal.processors.cache.CacheReadThroughAtomicRestartSelfTest; +import org.apache.ignite.internal.processors.cache.CacheReadThroughLocalAtomicRestartSelfTest; +import org.apache.ignite.internal.processors.cache.CacheReadThroughReplicatedAtomicRestartSelfTest; +import org.apache.ignite.internal.processors.cache.CacheStoreUsageMultinodeDynamicStartAtomicTest; +import org.apache.ignite.internal.processors.cache.CacheStoreUsageMultinodeStaticStartAtomicTest; +import org.apache.ignite.internal.processors.cache.CacheTxNotAllowReadFromBackupTest; +import org.apache.ignite.internal.processors.cache.GridCacheMultinodeUpdateAtomicNearEnabledSelfTest; +import org.apache.ignite.internal.processors.cache.GridCacheMultinodeUpdateAtomicSelfTest; +import org.apache.ignite.internal.processors.cache.GridCacheVersionMultinodeTest; +import org.apache.ignite.internal.processors.cache.IgniteCacheAtomicCopyOnReadDisabledTest; +import org.apache.ignite.internal.processors.cache.IgniteCacheAtomicLocalPeekModesTest; +import org.apache.ignite.internal.processors.cache.IgniteCacheAtomicLocalStoreValueTest; +import org.apache.ignite.internal.processors.cache.IgniteCacheAtomicNearEnabledStoreValueTest; +import org.apache.ignite.internal.processors.cache.IgniteCacheAtomicNearPeekModesTest; +import org.apache.ignite.internal.processors.cache.IgniteCacheAtomicPeekModesTest; +import org.apache.ignite.internal.processors.cache.IgniteCacheAtomicReplicatedPeekModesTest; +import org.apache.ignite.internal.processors.cache.IgniteCacheAtomicStoreValueTest; +import org.apache.ignite.internal.processors.cache.IgniteCacheConfigurationDefaultTemplateTest; +import org.apache.ignite.internal.processors.cache.IgniteCacheContainsKeyAtomicTest; +import org.apache.ignite.internal.processors.cache.IgniteCacheInvokeReadThroughSingleNodeTest; +import org.apache.ignite.internal.processors.cache.IgniteCacheInvokeReadThroughTest; +import org.apache.ignite.internal.processors.cache.IgniteCacheStartTest; +import org.apache.ignite.internal.processors.cache.IgniteClientCacheInitializationFailTest; +import org.apache.ignite.internal.processors.cache.IgniteDynamicCacheStartNoExchangeTimeoutTest; +import org.apache.ignite.internal.processors.cache.IgniteDynamicCacheStartSelfTest; +import org.apache.ignite.internal.processors.cache.IgniteDynamicCacheStartStopConcurrentTest; +import org.apache.ignite.internal.processors.cache.IgniteDynamicClientCacheStartSelfTest; +import org.apache.ignite.internal.processors.cache.IgniteExchangeFutureHistoryTest; +import org.apache.ignite.internal.processors.cache.IgniteInternalCacheTypesTest; +import org.apache.ignite.internal.processors.cache.IgniteStartCacheInTransactionAtomicSelfTest; +import org.apache.ignite.internal.processors.cache.IgniteSystemCacheOnClientTest; +import org.apache.ignite.internal.processors.cache.MarshallerCacheJobRunNodeRestartTest; +import org.apache.ignite.internal.processors.cache.distributed.CacheDiscoveryDataConcurrentJoinTest; +import org.apache.ignite.internal.processors.cache.distributed.CacheGetFutureHangsSelfTest; +import org.apache.ignite.internal.processors.cache.distributed.CacheGroupsPreloadTest; +import org.apache.ignite.internal.processors.cache.distributed.CacheNoValueClassOnServerNodeTest; +import org.apache.ignite.internal.processors.cache.distributed.CacheResultIsNotNullOnPartitionLossTest; +import org.apache.ignite.internal.processors.cache.distributed.IgniteCacheCreatePutTest; +import org.apache.ignite.internal.processors.cache.distributed.IgniteCacheFailedUpdateResponseTest; +import org.apache.ignite.internal.processors.cache.distributed.IgniteCacheReadFromBackupTest; +import org.apache.ignite.internal.processors.cache.distributed.IgniteCacheSingleGetMessageTest; +import org.apache.ignite.internal.processors.cache.distributed.dht.IgniteCrossCacheMvccTxSelfTest; +import org.apache.ignite.internal.processors.cache.distributed.dht.IgniteCrossCacheTxSelfTest; +import org.apache.ignite.internal.processors.cache.integration.IgniteCacheAtomicLoadAllTest; +import org.apache.ignite.internal.processors.cache.integration.IgniteCacheAtomicLoaderWriterTest; +import org.apache.ignite.internal.processors.cache.integration.IgniteCacheAtomicLocalLoadAllTest; +import org.apache.ignite.internal.processors.cache.integration.IgniteCacheAtomicLocalNoLoadPreviousValueTest; +import org.apache.ignite.internal.processors.cache.integration.IgniteCacheAtomicLocalNoReadThroughTest; +import org.apache.ignite.internal.processors.cache.integration.IgniteCacheAtomicLocalNoWriteThroughTest; +import org.apache.ignite.internal.processors.cache.integration.IgniteCacheAtomicNearEnabledNoLoadPreviousValueTest; +import org.apache.ignite.internal.processors.cache.integration.IgniteCacheAtomicNearEnabledNoReadThroughTest; +import org.apache.ignite.internal.processors.cache.integration.IgniteCacheAtomicNearEnabledNoWriteThroughTest; +import org.apache.ignite.internal.processors.cache.integration.IgniteCacheAtomicNoLoadPreviousValueTest; +import org.apache.ignite.internal.processors.cache.integration.IgniteCacheAtomicNoReadThroughTest; +import org.apache.ignite.internal.processors.cache.integration.IgniteCacheAtomicNoWriteThroughTest; +import org.apache.ignite.internal.processors.cache.integration.IgniteCacheAtomicStoreSessionTest; +import org.apache.ignite.internal.processors.cache.integration.IgniteCacheAtomicStoreSessionWriteBehindTest; +import org.apache.ignite.internal.processors.cache.integration.IgniteCacheJdbcBlobStoreNodeRestartTest; +import org.apache.ignite.internal.processors.cache.version.CacheVersionedEntryLocalAtomicSwapDisabledSelfTest; +import org.apache.ignite.internal.processors.cache.version.CacheVersionedEntryPartitionedAtomicSelfTest; +import org.apache.ignite.internal.processors.cache.version.CacheVersionedEntryReplicatedAtomicSelfTest; + +/** + * + */ +public class IgniteCacheMvccTestSuite4 extends TestSuite { + /** + * @return IgniteCache test suite. + */ + public static TestSuite suite() { + System.setProperty(IgniteSystemProperties.IGNITE_FORCE_MVCC_MODE_IN_TESTS, "true"); + + HashSet<Class> ignoredTests = new HashSet<>(128); + + // Skip classes that already contains Mvcc tests + ignoredTests.add(GridCacheVersionMultinodeTest.class); + ignoredTests.add(IgniteCacheCreatePutTest.class); + ignoredTests.add(IgniteClientCacheInitializationFailTest.class); + ignoredTests.add(IgniteCacheFailedUpdateResponseTest.class); + ignoredTests.add(CacheGetEntryPessimisticRepeatableReadSelfTest.class); + ignoredTests.add(CacheTxNotAllowReadFromBackupTest.class); + ignoredTests.add(CacheOffheapMapEntrySelfTest.class); + ignoredTests.add(CacheGroupsPreloadTest.class); + ignoredTests.add(CacheConnectionLeakStoreTxTest.class); + ignoredTests.add(IgniteCacheInvokeReadThroughTest.class); + ignoredTests.add(IgniteCacheInvokeReadThroughSingleNodeTest.class); + ignoredTests.add(IgniteDynamicCacheStartSelfTest.class); + ignoredTests.add(IgniteDynamicClientCacheStartSelfTest.class); + ignoredTests.add(IgniteDynamicCacheStartNoExchangeTimeoutTest.class); + ignoredTests.add(IgniteCacheSingleGetMessageTest.class); + ignoredTests.add(IgniteCacheReadFromBackupTest.class); + + // Optimistic tx tests. + ignoredTests.add(CacheGetEntryOptimisticReadCommittedSelfTest.class); + ignoredTests.add(CacheGetEntryOptimisticRepeatableReadSelfTest.class); + ignoredTests.add(CacheGetEntryOptimisticSerializableSelfTest.class); + + // Irrelevant Tx tests. + ignoredTests.add(CacheGetEntryPessimisticReadCommittedSelfTest.class); + ignoredTests.add(CacheGetEntryPessimisticSerializableSelfTest.class); + + // Atomic cache tests. + ignoredTests.add(GridCacheMultinodeUpdateAtomicSelfTest.class); + ignoredTests.add(GridCacheMultinodeUpdateAtomicNearEnabledSelfTest.class); + ignoredTests.add(IgniteCacheAtomicLoadAllTest.class); + ignoredTests.add(IgniteCacheAtomicLocalLoadAllTest.class); + ignoredTests.add(IgniteCacheAtomicLoaderWriterTest.class); + ignoredTests.add(IgniteCacheAtomicStoreSessionTest.class); + ignoredTests.add(IgniteCacheAtomicStoreSessionWriteBehindTest.class); + ignoredTests.add(IgniteCacheAtomicNoReadThroughTest.class); + ignoredTests.add(IgniteCacheAtomicNearEnabledNoReadThroughTest.class); + ignoredTests.add(IgniteCacheAtomicLocalNoReadThroughTest.class); + ignoredTests.add(IgniteCacheAtomicNoLoadPreviousValueTest.class); + ignoredTests.add(IgniteCacheAtomicNearEnabledNoLoadPreviousValueTest.class); + ignoredTests.add(IgniteCacheAtomicLocalNoLoadPreviousValueTest.class); + ignoredTests.add(IgniteCacheAtomicNoWriteThroughTest.class); + ignoredTests.add(IgniteCacheAtomicNearEnabledNoWriteThroughTest.class); + ignoredTests.add(IgniteCacheAtomicLocalNoWriteThroughTest.class); + ignoredTests.add(IgniteCacheAtomicPeekModesTest.class); + ignoredTests.add(IgniteCacheAtomicNearPeekModesTest.class); + ignoredTests.add(IgniteCacheAtomicReplicatedPeekModesTest.class); + ignoredTests.add(IgniteCacheAtomicLocalPeekModesTest.class); + ignoredTests.add(IgniteCacheAtomicCopyOnReadDisabledTest.class); + ignoredTests.add(IgniteCacheAtomicLocalStoreValueTest.class); + ignoredTests.add(IgniteCacheAtomicStoreValueTest.class); + ignoredTests.add(IgniteCacheAtomicNearEnabledStoreValueTest.class); + ignoredTests.add(CacheStoreListenerRWThroughDisabledAtomicCacheTest.class); + ignoredTests.add(CacheStoreUsageMultinodeStaticStartAtomicTest.class); + ignoredTests.add(CacheStoreUsageMultinodeDynamicStartAtomicTest.class); + ignoredTests.add(IgniteStartCacheInTransactionAtomicSelfTest.class); + ignoredTests.add(CacheReadThroughReplicatedAtomicRestartSelfTest.class); + ignoredTests.add(CacheReadThroughLocalAtomicRestartSelfTest.class); + ignoredTests.add(CacheReadThroughAtomicRestartSelfTest.class); + ignoredTests.add(CacheVersionedEntryLocalAtomicSwapDisabledSelfTest.class); + ignoredTests.add(CacheVersionedEntryPartitionedAtomicSelfTest.class); + ignoredTests.add(CacheGetFutureHangsSelfTest.class); + ignoredTests.add(IgniteCacheContainsKeyAtomicTest.class); + ignoredTests.add(CacheVersionedEntryReplicatedAtomicSelfTest.class); + ignoredTests.add(CacheResultIsNotNullOnPartitionLossTest.class); + + // Other non-tx tests. + ignoredTests.add(IgniteDynamicCacheStartStopConcurrentTest.class); + ignoredTests.add(IgniteCacheConfigurationDefaultTemplateTest.class); + ignoredTests.add(IgniteCacheStartTest.class); + ignoredTests.add(CacheDiscoveryDataConcurrentJoinTest.class); + ignoredTests.add(IgniteCacheJdbcBlobStoreNodeRestartTest.class); + ignoredTests.add(IgniteInternalCacheTypesTest.class); + ignoredTests.add(IgniteExchangeFutureHistoryTest.class); + ignoredTests.add(CacheNoValueClassOnServerNodeTest.class); + ignoredTests.add(IgniteSystemCacheOnClientTest.class); + ignoredTests.add(MarshallerCacheJobRunNodeRestartTest.class); + + // Skip classes which Mvcc implementations are added in this method below. + // TODO IGNITE-10175: refactor these tests (use assume) to support both mvcc and non-mvcc modes after moving to JUnit4/5. + ignoredTests.add(IgniteCrossCacheTxSelfTest.class); + + TestSuite suite = new TestSuite("IgniteCache Mvcc Test Suite part 4"); + + suite.addTest(IgniteCacheTestSuite4.suite(ignoredTests)); + + // Add Mvcc clones. + suite.addTestSuite(IgniteCrossCacheMvccTxSelfTest.class); + + return suite; + } +}
