You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by sb...@apache.org on 2015/01/19 07:42:27 UTC
[10/15] incubator-ignite git commit: IGNITE-59 Support lock,
lockAll: Fix tests.
IGNITE-59 Support lock, lockAll: Fix tests.
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/2d69d237
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/2d69d237
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/2d69d237
Branch: refs/heads/ignite-43
Commit: 2d69d23746f834ea1a4442f01fe4f1fe4e0f90c7
Parents: 7737e75
Author: sevdokimov <se...@gridgain.com>
Authored: Thu Jan 15 19:02:31 2015 +0300
Committer: sevdokimov <se...@gridgain.com>
Committed: Fri Jan 16 15:45:41 2015 +0300
----------------------------------------------------------------------
.../cache/GridCacheAbstractFullApiSelfTest.java | 115 +++++--------------
.../cache/GridCacheBasicApiAbstractTest.java | 8 +-
.../GridCacheLocalMultithreadedSelfTest.java | 28 +++--
3 files changed, 49 insertions(+), 102 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2d69d237/modules/core/src/test/java/org/gridgain/grid/kernal/processors/cache/GridCacheAbstractFullApiSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/gridgain/grid/kernal/processors/cache/GridCacheAbstractFullApiSelfTest.java b/modules/core/src/test/java/org/gridgain/grid/kernal/processors/cache/GridCacheAbstractFullApiSelfTest.java
index 4447383..2fb802b 100644
--- a/modules/core/src/test/java/org/gridgain/grid/kernal/processors/cache/GridCacheAbstractFullApiSelfTest.java
+++ b/modules/core/src/test/java/org/gridgain/grid/kernal/processors/cache/GridCacheAbstractFullApiSelfTest.java
@@ -17,6 +17,7 @@
package org.gridgain.grid.kernal.processors.cache;
+import com.google.common.collect.*;
import org.apache.ignite.*;
import org.apache.ignite.cluster.*;
import org.apache.ignite.configuration.*;
@@ -278,11 +279,13 @@ public abstract class GridCacheAbstractFullApiSelfTest extends GridCacheAbstract
*/
public void testRemoveInExplicitLocks() throws Exception {
if (lockingEnabled()) {
- GridCache<String, Integer> cache = cache();
+ IgniteCache<String, Integer> cache = jcache();
cache.put("a", 1);
- cache.lockAll(F.asList("a", "b", "c", "d"), 0);
+ Lock lock = cache.lockAll(ImmutableSet.of("a", "b", "c", "d"));
+
+ lock.lock();
try {
cache.remove("a");
@@ -291,7 +294,7 @@ public abstract class GridCacheAbstractFullApiSelfTest extends GridCacheAbstract
cache.putAll(F.asMap("b", 2, "c", 3, "d", 4));
}
finally {
- cache.unlockAll(F.asList("a", "b", "c", "d"));
+ lock.unlock();
}
}
}
@@ -3693,109 +3696,47 @@ public abstract class GridCacheAbstractFullApiSelfTest extends GridCacheAbstract
@SuppressWarnings("BusyWait")
public void testLockUnlockAll() throws Exception {
if (lockingEnabled()) {
- cache().put("key1", 1);
- cache().put("key2", 2);
+ IgniteCache<String, Integer> cache = jcache();
- assert !cache().isLocked("key1");
- assert !cache().isLocked("key2");
+ cache.put("key1", 1);
+ cache.put("key2", 2);
+
+ assert !cache.isLocked("key1");
+ assert !cache.isLocked("key2");
- cache().lockAll(F.asList("key1", "key2"), 0);
+ cache.lockAll(ImmutableSet.of("key1", "key2")).lock();
- assert cache().isLocked("key1");
- assert cache().isLocked("key2");
+ assert cache.isLocked("key1");
+ assert cache.isLocked("key2");
- cache().unlockAll(F.asList("key1", "key2"));
+ cache.lockAll(ImmutableSet.of("key1", "key2")).unlock();
for (int i = 0; i < 100; i++)
- if (cache().isLocked("key1") || cache().isLocked("key2"))
+ if (cache.isLocked("key1") || cache.isLocked("key2"))
Thread.sleep(10);
else
break;
- assert !cache().isLocked("key1");
- assert !cache().isLocked("key2");
+ assert !cache.isLocked("key1");
+ assert !cache.isLocked("key2");
- cache().lockAll(F.asList("key1", "key2"), 0);
+ Lock lock = cache.lockAll(ImmutableSet.of("key1", "key2"));
- assert cache().isLocked("key1");
- assert cache().isLocked("key2");
+ lock.lock();
- cache().unlockAll(F.asList("key1", "key2"));
+ assert cache.isLocked("key1");
+ assert cache.isLocked("key2");
+
+ lock.unlock();
for (int i = 0; i < 100; i++)
- if (cache().isLocked("key1") || cache().isLocked("key2"))
+ if (cache.isLocked("key1") || cache.isLocked("key2"))
Thread.sleep(10);
else
break;
- assert !cache().isLocked("key1");
- assert !cache().isLocked("key2");
- }
- }
-
- /**
- * @throws Exception In case of error.
- */
- @SuppressWarnings("BusyWait")
- public void testLockAllFiltered() throws Exception {
- if (lockingEnabled()) {
- cache().put("key1", 1);
- cache().put("key2", 2);
- cache().put("key3", 100);
- cache().put("key4", 101);
-
- assert !cache().isLocked("key1");
- assert !cache().isLocked("key2");
- assert !cache().isLocked("key3");
- assert !cache().isLocked("key4");
-
- assert !cache().isLockedByThread("key1");
- assert !cache().isLockedByThread("key2");
- assert !cache().isLockedByThread("key3");
- assert !cache().isLockedByThread("key4");
-
- assert !cache().projection(gte100).lockAll(F.asList("key2", "key3"), 0);
-
- assert !cache().isLocked("key1");
- assert !cache().isLocked("key2");
- assert !cache().isLocked("key3");
- assert !cache().isLocked("key4");
-
- assert !cache().isLockedByThread("key1");
- assert !cache().isLockedByThread("key2");
- assert !cache().isLockedByThread("key3");
- assert !cache().isLockedByThread("key4");
-
- assert cache().projection(F.<GridCacheEntry<String, Integer>>alwaysTrue()).lockAll(
- F.asList("key1", "key2", "key3", "key4"), 0);
-
- assert cache().isLocked("key1");
- assert cache().isLocked("key2");
- assert cache().isLocked("key3");
- assert cache().isLocked("key4");
-
- assert cache().isLockedByThread("key1");
- assert cache().isLockedByThread("key2");
- assert cache().isLockedByThread("key3");
- assert cache().isLockedByThread("key4");
-
- cache().unlockAll(F.asList("key1", "key2", "key3", "key4"),
- F.<GridCacheEntry<String, Integer>>alwaysTrue());
-
- for (String key : cache().primaryKeySet()) {
- for (int i = 0; i < 100; i++)
- if (cache().isLocked(key))
- Thread.sleep(10);
- else
- break;
-
- assert !cache().isLocked(key);
- }
-
- assert !cache().isLockedByThread("key1");
- assert !cache().isLockedByThread("key2");
- assert !cache().isLockedByThread("key3");
- assert !cache().isLockedByThread("key4");
+ assert !cache.isLocked("key1");
+ assert !cache.isLocked("key2");
}
}
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2d69d237/modules/core/src/test/java/org/gridgain/grid/kernal/processors/cache/GridCacheBasicApiAbstractTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/gridgain/grid/kernal/processors/cache/GridCacheBasicApiAbstractTest.java b/modules/core/src/test/java/org/gridgain/grid/kernal/processors/cache/GridCacheBasicApiAbstractTest.java
index 54c141e..2e5d00e 100644
--- a/modules/core/src/test/java/org/gridgain/grid/kernal/processors/cache/GridCacheBasicApiAbstractTest.java
+++ b/modules/core/src/test/java/org/gridgain/grid/kernal/processors/cache/GridCacheBasicApiAbstractTest.java
@@ -449,13 +449,13 @@ public abstract class GridCacheBasicApiAbstractTest extends GridCommonAbstractTe
* @throws Exception If test failed.
*/
public void testMultiLocks() throws Exception {
- GridCache<Integer, String> cache = ignite.cache(null);
+ IgniteCache<Integer, String> cache = ignite.jcache(null);
- Collection<Integer> keys = new ArrayList<>(3);
+ Set<Integer> keys = new HashSet<>();
Collections.addAll(keys, 1, 2, 3);
- assert cache.lockAll(keys, 0);
+ cache.lockAll(keys).lock();
assert cache.isLocked(1);
assert cache.isLocked(2);
@@ -465,7 +465,7 @@ public abstract class GridCacheBasicApiAbstractTest extends GridCommonAbstractTe
assert cache.isLockedByThread(2);
assert cache.isLockedByThread(3);
- cache.unlockAll(keys);
+ cache.lockAll(keys).unlock();
assert !cache.isLocked(1);
assert !cache.isLocked(2);
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2d69d237/modules/core/src/test/java/org/gridgain/grid/kernal/processors/cache/local/GridCacheLocalMultithreadedSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/gridgain/grid/kernal/processors/cache/local/GridCacheLocalMultithreadedSelfTest.java b/modules/core/src/test/java/org/gridgain/grid/kernal/processors/cache/local/GridCacheLocalMultithreadedSelfTest.java
index 1a42c15..624c5be 100644
--- a/modules/core/src/test/java/org/gridgain/grid/kernal/processors/cache/local/GridCacheLocalMultithreadedSelfTest.java
+++ b/modules/core/src/test/java/org/gridgain/grid/kernal/processors/cache/local/GridCacheLocalMultithreadedSelfTest.java
@@ -109,14 +109,16 @@ public class GridCacheLocalMultithreadedSelfTest extends GridCommonAbstractTest
* @throws Exception If test fails.
*/
public void testMultiLocks() throws Throwable {
+ final IgniteCache<Integer, String> cache = grid().jcache(null);
+
GridTestUtils.runMultiThreaded(new Callable<Object>() {
/** {@inheritDoc} */
@Override public Object call() throws Exception {
- Collection<Integer> keys = new ArrayList<>();
+ Set<Integer> keys = new HashSet<Integer>();
Collections.addAll(keys, 1, 2, 3);
- assert cache.lockAll(keys, 0);
+ cache.lockAll(keys).lock();
info("Locked keys from thread [keys=" + keys + ", thread=" + thread() + ']');
@@ -124,7 +126,7 @@ public class GridCacheLocalMultithreadedSelfTest extends GridCommonAbstractTest
info("Unlocking key from thread: " + thread());
- cache.unlockAll(keys);
+ cache.lockAll(keys).unlock();
info("Unlocked keys from thread: " + thread());
@@ -137,6 +139,8 @@ public class GridCacheLocalMultithreadedSelfTest extends GridCommonAbstractTest
* @throws Exception If test fails.
*/
public void testSlidingKeysLocks() throws Throwable {
+ final IgniteCache<Integer, String> cache = grid().jcache(null);
+
final AtomicInteger cnt = new AtomicInteger();
GridTestUtils.runMultiThreaded(new Callable<Object>() {
@@ -144,11 +148,11 @@ public class GridCacheLocalMultithreadedSelfTest extends GridCommonAbstractTest
@Override public Object call() throws Exception {
int idx = cnt.incrementAndGet();
- Collection<Integer> keys = new ArrayList<>();
+ Set<Integer> keys = new HashSet<>();
Collections.addAll(keys, idx, idx + 1, idx + 2, idx + 3);
- assert cache.lockAll(keys, 0);
+ cache.lockAll(keys).lock();
info("Locked keys from thread [keys=" + keys + ", thread=" + thread() + ']');
@@ -156,7 +160,7 @@ public class GridCacheLocalMultithreadedSelfTest extends GridCommonAbstractTest
info("Unlocking key from thread [keys=" + keys + ", thread=" + thread() + ']');
- cache.unlockAll(keys);
+ cache.lockAll(keys).unlock();
info("Unlocked keys from thread [keys=" + keys + ", thread=" + thread() + ']');
@@ -235,14 +239,16 @@ public class GridCacheLocalMultithreadedSelfTest extends GridCommonAbstractTest
* @throws Exception If test fails.
*/
public void testMultiLockTimeout() throws Exception {
+ final IgniteCache<Integer, String> cache = grid().jcache(null);
+
final CountDownLatch l1 = new CountDownLatch(1);
final CountDownLatch l2 = new CountDownLatch(1);
final CountDownLatch l3 = new CountDownLatch(1);
final AtomicInteger cnt = new AtomicInteger();
- final Collection<Integer> keys1 = new ArrayList<>();
- final Collection<Integer> keys2 = new ArrayList<>();
+ final Set<Integer> keys1 = new HashSet<>();
+ final Set<Integer> keys2 = new HashSet<>();
GridTestThread t1 = new GridTestThread(new Callable<Object>() {
/** {@inheritDoc} */
@@ -253,7 +259,7 @@ public class GridCacheLocalMultithreadedSelfTest extends GridCommonAbstractTest
Collections.addAll(keys1, idx, idx + 1, idx + 2, idx + 3);
- assert cache.lockAll(keys1, 0);
+ cache.lockAll(keys1).lock();
for (Integer key : keys1) {
assert cache.isLocked(key) : "Failed to acquire lock for key: " + key;
@@ -264,7 +270,7 @@ public class GridCacheLocalMultithreadedSelfTest extends GridCommonAbstractTest
l2.await();
- cache.unlockAll(keys1);
+ cache.lockAll(keys1).unlock();
for (Integer key : keys1) {
assert !cache.isLocked(key);
@@ -292,7 +298,7 @@ public class GridCacheLocalMultithreadedSelfTest extends GridCommonAbstractTest
}
// Lock won't be acquired due to timeout.
- assert !cache.lockAll(keys2, 100);
+ assert !cache.lockAll(keys2).tryLock(100, TimeUnit.MILLISECONDS);
for (Integer key : keys2) {
boolean locked = cache.isLocked(key);