ignite-6467

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

Branch: refs/heads/ignite-6467-1
Commit: 8d13369add28d8cb7198f8d5c7ce4e8cf0cb037a
Parents: 102b0f3
Author: sboikov <sboi...@apache.org>
Authored: Tue Jul 24 13:29:58 2018 +0300
Committer: sboikov <sboi...@apache.org>
Committed: Tue Jul 24 13:29:58 2018 +0300

----------------------------------------------------------------------
 ...niteCacheClientNodeChangingTopologyTest.java | 95 ++++++++++++++++++++
 .../testsuites/IgniteCacheTestSuite6.java       | 13 +--
 2 files changed, 98 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/8d13369a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheClientNodeChangingTopologyTest.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheClientNodeChangingTopologyTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheClientNodeChangingTopologyTest.java
index c82b4b9..10c5f37 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheClientNodeChangingTopologyTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheClientNodeChangingTopologyTest.java
@@ -45,6 +45,7 @@ import org.apache.ignite.IgniteTransactions;
 import org.apache.ignite.cache.CacheAtomicityMode;
 import org.apache.ignite.cache.affinity.Affinity;
 import org.apache.ignite.cache.affinity.AffinityFunction;
+import org.apache.ignite.cache.affinity.rendezvous.RendezvousAffinityFunction;
 import org.apache.ignite.cluster.ClusterNode;
 import org.apache.ignite.configuration.CacheConfiguration;
 import org.apache.ignite.configuration.IgniteConfiguration;
@@ -504,6 +505,7 @@ public class IgniteCacheClientNodeChangingTopologyTest 
extends GridCommonAbstrac
 
         checkData(map, null, cache, 4);
     }
+
     /**
      * @throws Exception If failed.
      */
@@ -928,6 +930,87 @@ public class IgniteCacheClientNodeChangingTopologyTest 
extends GridCommonAbstrac
     }
 
     /**
+     * @return Cache configuration.
+     */
+    private CacheConfiguration testPessimisticTx3Cfg() {
+        CacheConfiguration ccfg = new CacheConfiguration(DEFAULT_CACHE_NAME);
+
+        ccfg.setCacheMode(PARTITIONED);
+        ccfg.setBackups(0);
+        ccfg.setAtomicityMode(TRANSACTIONAL);
+        ccfg.setWriteSynchronizationMode(FULL_SYNC);
+        ccfg.setRebalanceMode(SYNC);
+        ccfg.setAffinity(new RendezvousAffinityFunction(false, 16));
+
+        return ccfg;
+    }
+
+    /**
+     * @throws Exception If failed.
+     */
+    public void testPessimisticTx3() throws Exception {
+        for (int iter = 0; iter < 5; iter++) {
+            info("Iteration: " + iter);
+
+            ccfg = testPessimisticTx3Cfg();
+
+            IgniteEx ignite0 = startGrid(0);
+
+            Map<Integer, Integer> map = new HashMap<>();
+
+            final IgniteCache<Integer, Integer> cache0 = 
ignite0.cache(DEFAULT_CACHE_NAME);
+
+            for (int i = 0; i < 10000; i++) {
+                cache0.put(i, i);
+                map.put(i, i + 1);
+            }
+
+            client = true;
+
+            ccfg = testPessimisticTx3Cfg();
+
+            final Ignite ignite3 = startGrid(3);
+
+            final IgniteCache<Integer, Integer> cache = 
ignite3.cache(DEFAULT_CACHE_NAME);
+
+            TestCommunicationSpi spi = 
(TestCommunicationSpi)ignite3.configuration().getCommunicationSpi();
+            spi.blockMessages(GridNearLockRequest.class, 
ignite0.localNode().id());
+
+            IgniteInternalFuture putFut = GridTestUtils.runAsync(new 
Callable<Object>() {
+                @Override public Object call() throws Exception {
+                    Thread.currentThread().setName("put-thread");
+
+                    try (Transaction tx = 
ignite3.transactions().txStart(PESSIMISTIC, REPEATABLE_READ)) {
+                        cache.putAll(map);
+
+                        tx.commit();
+                    }
+
+                    return null;
+                }
+            });
+
+            spi.waitForBlocked();
+
+            client = false;
+
+            ccfg = testPessimisticTx3Cfg();
+
+            startGrid(1);
+
+            // Want provoke case when client req is processed when target 
partition is RENTING,
+            // there is no easy way to do it, so just try sleep.
+            U.sleep(ThreadLocalRandom.current().nextInt(1000) + 100);
+
+            spi.stopBlock();
+
+            putFut.get();
+
+            stopAllGrids();
+        }
+    }
+
+    /**
      * @throws Exception If failed.
      */
     public void testOptimisticSerializableTx() throws Exception {
@@ -2004,6 +2087,8 @@ public class IgniteCacheClientNodeChangingTopologyTest 
extends GridCommonAbstrac
 
                         blockedMsgs.add(new T2<>(node, (GridIoMessage)msg));
 
+                        notifyAll();
+
                         return;
                     }
                 }
@@ -2072,6 +2157,16 @@ public class IgniteCacheClientNodeChangingTopologyTest 
extends GridCommonAbstrac
                 blockedMsgs.clear();
             }
         }
+
+        /**
+         * @throws InterruptedException If interrupted.
+         */
+        public void waitForBlocked() throws InterruptedException {
+            synchronized (this) {
+                while (blockedMsgs.isEmpty())
+                    wait();
+            }
+        }
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/ignite/blob/8d13369a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite6.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite6.java
 
b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite6.java
index bfe3d00..fe2a823 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite6.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite6.java
@@ -33,14 +33,7 @@ import 
org.apache.ignite.internal.processors.cache.WalModeChangeAdvancedSelfTest
 import 
org.apache.ignite.internal.processors.cache.WalModeChangeCoordinatorNotAffinityNodeSelfTest;
 import org.apache.ignite.internal.processors.cache.WalModeChangeSelfTest;
 import 
org.apache.ignite.internal.processors.cache.datastructures.IgniteExchangeLatchManagerCoordinatorFailTest;
-import 
org.apache.ignite.internal.processors.cache.distributed.CacheExchangeMergeTest;
-import 
org.apache.ignite.internal.processors.cache.distributed.CachePartitionStateTest;
-import 
org.apache.ignite.internal.processors.cache.distributed.GridCachePartitionEvictionDuringReadThroughSelfTest;
-import 
org.apache.ignite.internal.processors.cache.distributed.IgniteCache150ClientsTest;
-import 
org.apache.ignite.internal.processors.cache.distributed.IgniteCacheThreadLocalTxTest;
-import 
org.apache.ignite.internal.processors.cache.distributed.IgniteOptimisticTxSuspendResumeMultiServerTest;
-import 
org.apache.ignite.internal.processors.cache.distributed.IgniteOptimisticTxSuspendResumeTest;
-import 
org.apache.ignite.internal.processors.cache.distributed.IgnitePessimisticTxSuspendResumeTest;
+import org.apache.ignite.internal.processors.cache.distributed.*;
 import 
org.apache.ignite.internal.processors.cache.persistence.IgnitePdsCacheAssignmentNodeRestartsTest;
 import org.apache.ignite.internal.processors.cache.transactions.TxLabelTest;
 import 
org.apache.ignite.internal.processors.cache.transactions.TxMultiCacheAsyncOpsTest;
@@ -67,8 +60,8 @@ public class IgniteCacheTestSuite6 extends TestSuite {
     public static TestSuite suite() throws Exception {
         TestSuite suite = new TestSuite("IgniteCache Test Suite part 6");
 
-        for (int i = 0; i < 2; i++)
-            suite.addTestSuite(CacheExchangeMergeTest.class);
+        suite.addTestSuite(CacheExchangeMergeTest.class);
+        suite.addTestSuite(IgniteCacheClientNodeChangingTopologyTest.class);
 
         return suite;
     }

Reply via email to