IGNITE-3601 Read-only optimistic transaction shouldn't throw an exception if 
entry version was not changed.
Correctional unit tests.


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

Branch: refs/heads/ignite-3601p
Commit: 9b053e5cfb62913373c425df0e03d0dde1405701
Parents: 065f040
Author: vd-pyatkov <vpyat...@gridgain.com>
Authored: Tue Aug 30 13:58:30 2016 +0300
Committer: vd-pyatkov <vpyat...@gridgain.com>
Committed: Tue Aug 30 13:58:30 2016 +0300

----------------------------------------------------------------------
 .../CacheSerializableTransactionsTest.java      | 28 +++++++++++++++++---
 .../processors/cache/CacheTxFastFinishTest.java |  2 +-
 2 files changed, 26 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/9b053e5c/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheSerializableTransactionsTest.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheSerializableTransactionsTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheSerializableTransactionsTest.java
index 3d4f850..4689724 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheSerializableTransactionsTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheSerializableTransactionsTest.java
@@ -56,6 +56,7 @@ import org.apache.ignite.configuration.CacheConfiguration;
 import org.apache.ignite.configuration.IgniteConfiguration;
 import org.apache.ignite.configuration.NearCacheConfiguration;
 import org.apache.ignite.internal.IgniteInternalFuture;
+import org.apache.ignite.internal.IgniteKernal;
 import org.apache.ignite.internal.cluster.ClusterTopologyCheckedException;
 import org.apache.ignite.internal.util.typedef.F;
 import org.apache.ignite.internal.util.typedef.G;
@@ -65,6 +66,7 @@ import org.apache.ignite.internal.util.typedef.internal.U;
 import org.apache.ignite.lang.IgniteClosure;
 import org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi;
 import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
+import org.apache.ignite.spi.discovery.tcp.internal.TcpDiscoveryNode;
 import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder;
 import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
 import org.apache.ignite.spi.swapspace.inmemory.GridTestSwapSpaceSpi;
@@ -1367,10 +1369,16 @@ public class CacheSerializableTransactionsTest extends 
GridCommonAbstractTest {
                             tx.commit();
                         }
 
-                        fail();
+                        if (!isKeyLocal(ignite0, cache, key))
+                            fail();
+
+                        log.info("Read only optimistic commit.");
                     }
                     catch (TransactionOptimisticException e) {
                         log.info("Expected exception: " + e);
+
+                        if (isKeyLocal(ignite0, cache, key))
+                            fail();
                     }
 
                     checkValue(key, 3, cache.getName());
@@ -1383,6 +1391,18 @@ public class CacheSerializableTransactionsTest extends 
GridCommonAbstractTest {
     }
 
     /**
+     * Checks, whether the key is stored locally.
+     * @param ignite0 Ignite 0.
+     * @param cache Cache.
+     * @param key Key.
+     */
+    private boolean isKeyLocal(Ignite ignite0, IgniteCache<Integer, Integer> 
cache, Integer key) {
+        return ((TcpDiscoveryNode)((ArrayList)ignite0.affinity(cache.getName())
+            
.mapKeyToPrimaryAndBackups(ignite0.affinity(cache.getName()).affinityKey(key)))
+            .get(0)).id().equals(((IgniteKernal)ignite0).getLocalNodeId());
+    }
+
+    /**
      * @throws Exception If failed.
      */
     public void testTxConflictReplace() throws Exception {
@@ -2636,10 +2656,11 @@ public class CacheSerializableTransactionsTest extends 
GridCommonAbstractTest {
                     tx.commit();
                 }
 
-                fail();
+                log.info("Read only optimistic commit.");
             }
             catch (TransactionOptimisticException e) {
                 log.info("Expected exception: " + e);
+                fail();
             }
 
             checkValue(key1, -1, cacheName);
@@ -2903,10 +2924,11 @@ public class CacheSerializableTransactionsTest extends 
GridCommonAbstractTest {
                         tx.commit();
                     }
 
-                    fail();
+                    log.info("Read only optimistic commit.");
                 }
                 catch (TransactionOptimisticException e) {
                     log.info("Expected exception: " + e);
+                    fail();
                 }
 
                 try (Transaction tx = txs.txStart(OPTIMISTIC, SERIALIZABLE)) {

http://git-wip-us.apache.org/repos/asf/ignite/blob/9b053e5c/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheTxFastFinishTest.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheTxFastFinishTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheTxFastFinishTest.java
index 35b1405..f9c6683 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheTxFastFinishTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheTxFastFinishTest.java
@@ -173,7 +173,7 @@ public class CacheTxFastFinishTest extends 
GridCommonAbstractTest {
                 try (Transaction tx = txs.txStart(OPTIMISTIC, SERIALIZABLE)) {
                     cache.get(i);
 
-                    checkNormalTxFinish(tx, commit);
+                    checkFastTxFinish(tx, commit);
                 }
 
                 try (Transaction tx = txs.txStart(PESSIMISTIC, 
REPEATABLE_READ)) {

Reply via email to