# ignite-sprint-4 added test

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

Branch: refs/heads/ignite-471
Commit: 7d9df3d43a3bfe89021784654ae4e0283c54af94
Parents: acc731c
Author: sboikov <sboi...@gridgain.com>
Authored: Wed Apr 29 09:30:49 2015 +0300
Committer: sboikov <sboi...@gridgain.com>
Committed: Wed Apr 29 09:31:35 2015 +0300

----------------------------------------------------------------------
 .../distributed/GridCacheLockAbstractTest.java  | 70 ++++++++++++++++++++
 1 file changed, 70 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/7d9df3d4/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheLockAbstractTest.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheLockAbstractTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheLockAbstractTest.java
index 257f88a..72a64a1 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheLockAbstractTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheLockAbstractTest.java
@@ -31,6 +31,7 @@ import org.jetbrains.annotations.*;
 import javax.cache.*;
 import java.util.*;
 import java.util.concurrent.*;
+import java.util.concurrent.atomic.*;
 import java.util.concurrent.locks.*;
 
 import static org.apache.ignite.cache.CacheAtomicityMode.*;
@@ -494,4 +495,73 @@ public abstract class GridCacheLockAbstractTest extends 
GridCommonAbstractTest {
         fut1.get();
         fut2.get();
     }
+
+    /**
+     * @throws Throwable If failed.
+     */
+    public void testLockReentrancy() throws Throwable {
+        fail("https://issues.apache.org/jira/browse/IGNITE-835";);
+
+        for (int i = 10; i < 100; i++) {
+            log.info("Key: " + i);
+
+            final int i0 = i;
+
+            final Lock lock = cache1.lock(i);
+
+            lock.lockInterruptibly();
+
+            try {
+                final AtomicReference<Throwable> err = new AtomicReference<>();
+
+                Thread t =  new Thread(new Runnable() {
+                    @Override public void run() {
+                        try {
+                            assert !lock.tryLock();
+                            assert !lock.tryLock(100, TimeUnit.MILLISECONDS);
+
+                            assert !cache1.lock(i0).tryLock();
+                            assert !cache1.lock(i0).tryLock(100, 
TimeUnit.MILLISECONDS);
+                        }
+                        catch (Throwable e) {
+                            err.set(e);
+                        }
+                    }
+                });
+
+                t.start();
+                t.join();
+
+                if (err.get() != null)
+                    throw err.get();
+
+                lock.lock();
+                lock.unlock();
+
+                t =  new Thread(new Runnable() {
+                    @Override public void run() {
+                        try {
+                            assert !lock.tryLock();
+                            assert !lock.tryLock(100, TimeUnit.MILLISECONDS);
+
+                            assert !cache1.lock(i0).tryLock();
+                            assert !cache1.lock(i0).tryLock(100, 
TimeUnit.MILLISECONDS);
+                        }
+                        catch (Throwable e) {
+                            err.set(e);
+                        }
+                    }
+                });
+
+                t.start();
+                t.join();
+
+                if (err.get() != null)
+                    throw err.get();
+            }
+            finally {
+                lock.unlock();
+            }
+        }
+    }
 }

Reply via email to