#ignite-333: 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/bdf76343 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/bdf76343 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/bdf76343 Branch: refs/heads/ignite-471 Commit: bdf76343b85518ee58650edfbedd356ae09a057d Parents: 6da0acf Author: ivasilinets <ivasilin...@gridgain.com> Authored: Thu Mar 12 18:23:44 2015 +0300 Committer: ivasilinets <ivasilin...@gridgain.com> Committed: Thu Mar 12 18:23:44 2015 +0300 ---------------------------------------------------------------------- .../processors/cache/CacheProjection.java | 4 +- .../processors/cache/GridCacheAdapter.java | 14 +- .../cache/GridCacheProjectionImpl.java | 8 +- .../processors/cache/GridCacheProxyImpl.java | 8 +- .../processors/cache/IgniteCacheProxy.java | 2 +- .../cache/GridCacheAbstractFullApiSelfTest.java | 146 +++++++++++-------- 6 files changed, 107 insertions(+), 75 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bdf76343/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheProjection.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheProjection.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheProjection.java index d027aec..5ca17a0 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheProjection.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheProjection.java @@ -1274,7 +1274,7 @@ public interface CacheProjection<K, V> extends Iterable<Cache.Entry<K, V>> { * if entry was in use at the time of this method invocation and could not be * cleared. */ - public void clearLocally(Set<K> keys); + public void clearLocallyAll(Set<K> keys); /** * Clears key on all nodes that store it's data. That is, caches are cleared on remote @@ -1304,7 +1304,7 @@ public interface CacheProjection<K, V> extends Iterable<Cache.Entry<K, V>> { * @param keys Keys to clear. * @throws IgniteCheckedException In case of cache could not be cleared on any of the nodes. */ - public void clear(Set<K> keys) throws IgniteCheckedException; + public void clearAll(Set<K> keys) throws IgniteCheckedException; /** * Clears cache on all nodes that store it's data. That is, caches are cleared on remote http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bdf76343/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java index c6732ae..a0111ac 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java @@ -1339,7 +1339,7 @@ public abstract class GridCacheAdapter<K, V> implements GridCache<K, V>, } /** {@inheritDoc} */ - @Override public void clearLocally(Set<K> keys) { + @Override public void clearLocallyAll(Set<K> keys) { clearLocally0(keys); } @@ -1444,11 +1444,11 @@ public abstract class GridCacheAdapter<K, V> implements GridCache<K, V>, } /** {@inheritDoc} */ - @Override public void clear(Set<K> keys) throws IgniteCheckedException { + @Override public void clearAll(Set<K> keys) throws IgniteCheckedException { // Clear local cache synchronously. - clearLocally(keys); + clearLocallyAll(keys); - clearRemotes(0, new GlobalClearKeySetCallable<K>(name(), keys)); + clearRemotes(0, new GlobalClearKeySetCallable(name(), keys)); } /** {@inheritDoc} */ @@ -1458,7 +1458,7 @@ public abstract class GridCacheAdapter<K, V> implements GridCache<K, V>, /** {@inheritDoc} */ @Override public IgniteInternalFuture<?> clearAsync(Set<K> keys) { - return clearAsync(new GlobalClearKeySetCallable<K>(name(), keys)); + return clearAsync(new GlobalClearKeySetCallable(name(), keys)); } /** {@inheritDoc} */ @@ -5624,7 +5624,7 @@ public abstract class GridCacheAdapter<K, V> implements GridCache<K, V>, * Global clear keys. */ @GridInternal - private static class GlobalClearKeySetCallable<K> extends GlobalClearCallable { + private static class GlobalClearKeySetCallable<K, V> extends GlobalClearCallable { /** */ private static final long serialVersionUID = 0L; @@ -5650,7 +5650,7 @@ public abstract class GridCacheAdapter<K, V> implements GridCache<K, V>, /** {@inheritDoc} */ @Override public Object call() throws Exception { - ((IgniteEx)ignite).cachex(cacheName).clearLocally(keys); + ((IgniteEx)ignite).<K, V>cachex(cacheName).clearLocallyAll(keys); return null; } http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bdf76343/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProjectionImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProjectionImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProjectionImpl.java index 191c2a3..5c05f30 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProjectionImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProjectionImpl.java @@ -875,8 +875,8 @@ public class GridCacheProjectionImpl<K, V> implements GridCacheProjectionEx<K, V } /** {@inheritDoc} */ - @Override public void clearLocally(Set<K> keys) { - cache.clearLocally(keys); + @Override public void clearLocallyAll(Set<K> keys) { + cache.clearLocallyAll(keys); } /** {@inheritDoc} */ @@ -890,8 +890,8 @@ public class GridCacheProjectionImpl<K, V> implements GridCacheProjectionEx<K, V } /** {@inheritDoc} */ - @Override public void clear(Set<K> keys) throws IgniteCheckedException { - cache.clear(keys); + @Override public void clearAll(Set<K> keys) throws IgniteCheckedException { + cache.clearAll(keys); } /** {@inheritDoc} */ http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bdf76343/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProxyImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProxyImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProxyImpl.java index 6d1b58d..218b812 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProxyImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProxyImpl.java @@ -1312,11 +1312,11 @@ public class GridCacheProxyImpl<K, V> implements GridCacheProxy<K, V>, Externali } /** {@inheritDoc} */ - @Override public void clearLocally(Set<K> keys) { + @Override public void clearLocallyAll(Set<K> keys) { GridCacheProjectionImpl<K, V> prev = gate.enter(prj); try { - delegate.clearLocally(keys); + delegate.clearLocallyAll(keys); } finally { gate.leave(prev); @@ -1336,11 +1336,11 @@ public class GridCacheProxyImpl<K, V> implements GridCacheProxy<K, V>, Externali } /** {@inheritDoc} */ - @Override public void clear(Set<K> keys) throws IgniteCheckedException { + @Override public void clearAll(Set<K> keys) throws IgniteCheckedException { GridCacheProjectionImpl<K, V> prev = gate.enter(prj); try { - delegate.clear(keys); + delegate.clearAll(keys); } finally { gate.leave(prev); http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bdf76343/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxy.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxy.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxy.java index 5b9d801..14481cb 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxy.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxy.java @@ -1068,7 +1068,7 @@ public class IgniteCacheProxy<K, V> extends AsyncSupportAdapter<IgniteCache<K, V if (isAsync()) setFuture(delegate.clearAsync(keys)); else - delegate.clear(keys); + delegate.clearAll(keys); } catch (IgniteCheckedException e) { throw cacheException(e); http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/bdf76343/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractFullApiSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractFullApiSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractFullApiSelfTest.java index 0479d9b..b15d7ae 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractFullApiSelfTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractFullApiSelfTest.java @@ -4098,92 +4098,121 @@ public abstract class GridCacheAbstractFullApiSelfTest extends GridCacheAbstract * @throws Exception If failed. */ public void testLocalClearKey() throws Exception { - testLocalClearKey(false, Arrays.asList("key25")); - } + addKeys(); - /** - * @throws Exception If failed. - */ - public void testLocalClearKeyAsync() throws Exception { - testLocalClearKey(true, Arrays.asList("key25")); + String keyToRemove = "key" + 25; + + Ignite g = primaryIgnite(keyToRemove); + + g.<String, Integer>jcache(null).localClear(keyToRemove); + + for (int i = 0; i < 500; ++i) { + String key = "key" + i; + + boolean found = primaryIgnite(key).jcache(null).localPeek(key) != null; + + if (keyToRemove.equals(key)) + assertFalse("Found removed key " + key, found); + else + assertTrue("Not found key " + key, found); + } } /** * @throws Exception If failed. */ public void testLocalClearKeys() throws Exception { - testLocalClearKey(false, Arrays.asList("key25", "key100", "key150")); - } + Map<String, List<String>> keys = addKeys(); - /** - * @throws Exception If failed. - */ - public void testLocalClearKeysAsync() throws Exception { - testLocalClearKey(true, Arrays.asList("key25", "key100", "key150")); + Ignite g = grid(0); + + Set<String> keysToRemove = new HashSet<>(); + + for (int i = 0; i < gridCount(); ++i) { + List<String> gridKeys = keys.get(grid(i).name()); + + if (gridKeys.size() > 2) { + keysToRemove.add(gridKeys.get(0)); + + keysToRemove.add(gridKeys.get(1)); + + g = grid(i); + + break; + } + } + + g.<String, Integer>jcache(null).localClearAll(keysToRemove); + + for (int i = 0; i < 500; ++i) { + String key = "key" + i; + + boolean found = primaryIgnite(key).jcache(null).localPeek(key) != null; + + if (keysToRemove.contains(key)) + assertFalse("Found removed key " + key, found); + else + assertTrue("Not found key " + key, found); + } } /** * @throws Exception If failed. */ public void testLocalClear() throws Exception { - testLocalClearKey(false, null); - } + Map<String, List<String>> keys = addKeys(); - /** - * @throws Exception If failed. - */ - public void testLocalClearAsync() throws Exception { - testLocalClearKey(true, null); - } + Set<String> keysToRemove = new HashSet<>(); - /** - * @param async If {@code true} uses async method. - * @throws Exception If failed. - */ - protected void testLocalClearKey(boolean async, Collection<String> keysToRemove) throws Exception { - // Save entries only on their primary nodes. If we didn't do so, clearLocally() will not remove all entries - // because some of them were blocked due to having readers. - for (int i = 0; i < 500; ++i) { - Ignite g = primaryIgnite("key" + i); + Ignite g = grid(0); - g.jcache(null).put("key" + i, "value" + i); - } + for (int i = 0; i < gridCount(); ++i) { + List<String> gridKeys = keys.get(grid(i).name()); - if (async) { - IgniteCache<String, Integer> asyncCache = jcache().withAsync(); + if (gridKeys.size() > 0) { + keysToRemove.addAll(gridKeys); - if (keysToRemove == null) - asyncCache.localClear(); - else if (keysToRemove.size() == 1) - asyncCache.localClear(F.first(keysToRemove)); - else - asyncCache.localClearAll(new HashSet(keysToRemove)); + g = grid(i); - asyncCache.future().get(); - } - else { - if (keysToRemove == null) - jcache().localClear(); - else if (keysToRemove.size() == 1) - jcache().localClear(F.first(keysToRemove)); - else - jcache().localClearAll(new HashSet(keysToRemove)); + break; + } } + g.jcache(null).localClear(); + for (int i = 0; i < 500; ++i) { String key = "key" + i; - boolean found = false; - - for (int j = 0; j < gridCount(); j++) - if (jcache(j).localPeek(key) != null) - found = true; + boolean found = primaryIgnite(key).jcache(null).localPeek(key) != null; - if (keysToRemove == null || keysToRemove.contains(key)) + if (keysToRemove.contains(key)) assertFalse("Found removed key " + key, found); else assertTrue("Not found key " + key, found); } + + assertEquals(0, g.jcache(null).localSize()); + } + + private Map<String, List<String>> addKeys() { + // Save entries only on their primary nodes. If we didn't do so, clearLocally() will not remove all entries + // because some of them were blocked due to having readers. + Map<String, List<String>> keys = new HashMap<>(); + + for (int i = 0; i < gridCount(); ++i) + keys.put(grid(i).name(), new ArrayList<String>()); + + for (int i = 0; i < 500; ++i) { + String key = "key" + i; + + Ignite g = primaryIgnite(key); + + g.jcache(null).put(key, "value" + i); + + keys.get(g.name()).add(key); + } + + return keys; } /** @@ -4247,9 +4276,12 @@ public abstract class GridCacheAbstractFullApiSelfTest extends GridCacheAbstract boolean found = false; for (int j = 0; j < gridCount(); j++) - if (jcache(j).localPeek(key) != null) + if (jcache(j).localPeek(key) != null) { found = true; + info("Found key " + key + " on node " + j); + } + if (!keysToRemove.contains(key)) assertTrue("Not found key " + key, found); else