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/05/26 19:08:07 UTC
[2/3] incubator-ignite git commit: Ignite-929
Ignite-929
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/74420235
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/74420235
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/74420235
Branch: refs/heads/ignite-929
Commit: 74420235783f96a7f2c0d51fd9a7db74a216c6ce
Parents: a4c2851
Author: avinogradov <av...@gridgain.com>
Authored: Tue May 26 20:07:43 2015 +0300
Committer: avinogradov <av...@gridgain.com>
Committed: Tue May 26 20:07:43 2015 +0300
----------------------------------------------------------------------
.../cache/CacheStopAndDestroySelfTest.java | 282 +++++++++++++------
1 file changed, 203 insertions(+), 79 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/74420235/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheStopAndDestroySelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheStopAndDestroySelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheStopAndDestroySelfTest.java
index 4e58c2a..31e5d92 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheStopAndDestroySelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheStopAndDestroySelfTest.java
@@ -22,29 +22,35 @@ import org.apache.ignite.configuration.*;
import org.apache.ignite.testframework.junits.common.*;
/**
- * Check stop and remove methods behavior.
+ * Checks stop and destroy methods behavior.
*/
public class CacheStopAndDestroySelfTest extends GridCommonAbstractTest {
/** key-value used at test. */
protected static String KEY_VAL = "1";
/** cache name 1. */
- protected static String CACHE_NAME_1 = "cache1";
+ protected static String CACHE_NAME_DESTROY_DHT = "cache_d";
/** cache name 2. */
- protected static String CACHE_NAME_2 = "cache2";
+ protected static String CACHE_NAME_CLOSE_DHT = "cache_c";
/** cache name 3. */
- protected static String CACHE_NAME_3 = "cache3";
+ protected static String CACHE_NAME_DESTROY_CLIENT = "cache_d_client";
/** cache name 4. */
- protected static String CACHE_NAME_4 = "cache4";
+ protected static String CACHE_NAME_CLOSE_CLIENT = "cache_c_client";
+
+ /** near cache name 1. */
+ protected static String CACHE_NAME_DESTROY_NEAR = "cache_d_near";
+
+ /** near cache name 2. */
+ protected static String CACHE_NAME_CLOSE_NEAR = "cache_c_near";
/** local cache name 1. */
- protected static String CACHE_NAME_LOC_1 = "local1";
+ protected static String CACHE_NAME_DESTROY_LOC = "cache_d_local";
/** local cache name 2. */
- protected static String CACHE_NAME_LOC_2 = "local2";
+ protected static String CACHE_NAME_CLOSE_LOC = "cache_c_local";
/**
* @return Grids count to start.
@@ -73,72 +79,85 @@ public class CacheStopAndDestroySelfTest extends GridCommonAbstractTest {
public void testCacheStopAndDestroy() throws Exception {
startGridsMultiThreaded(gridCount());
- CacheConfiguration cCfg1 = defaultCacheConfiguration();
- cCfg1.setName(CACHE_NAME_1);
- cCfg1.setCacheMode(CacheMode.PARTITIONED);
-
- CacheConfiguration cCfg2 = defaultCacheConfiguration();
- cCfg2.setName(CACHE_NAME_2);
- cCfg2.setCacheMode(CacheMode.PARTITIONED);
-
- CacheConfiguration cCfg3 = defaultCacheConfiguration();
- cCfg3.setName(CACHE_NAME_3);
- cCfg3.setCacheMode(CacheMode.PARTITIONED);
-
- CacheConfiguration cCfg4 = defaultCacheConfiguration();
- cCfg4.setName(CACHE_NAME_4);
- cCfg4.setCacheMode(CacheMode.PARTITIONED);
-
- CacheConfiguration cCfgLoc1 = defaultCacheConfiguration();
- cCfgLoc1.setName(CACHE_NAME_LOC_1);
- cCfgLoc1.setCacheMode(CacheMode.LOCAL);
-
- CacheConfiguration cCfgLoc2 = defaultCacheConfiguration();
- cCfgLoc2.setName(CACHE_NAME_LOC_2);
- cCfgLoc2.setCacheMode(CacheMode.LOCAL);
-
- grid(0).getOrCreateCache(cCfg1);
- grid(0).getOrCreateCache(cCfg2);
- grid(0).getOrCreateCache(cCfg3);
- grid(0).getOrCreateCache(cCfg4);
- grid(0).getOrCreateCache(cCfgLoc1);
- grid(0).getOrCreateCache(cCfgLoc2);
-
- grid(0).cache(CACHE_NAME_1).put(KEY_VAL, KEY_VAL);
- grid(0).cache(CACHE_NAME_2).put(KEY_VAL, KEY_VAL);
- grid(0).cache(CACHE_NAME_3).put(KEY_VAL, KEY_VAL);
- grid(0).cache(CACHE_NAME_4).put(KEY_VAL, KEY_VAL);
- grid(0).cache(CACHE_NAME_LOC_1).put(KEY_VAL, KEY_VAL + 0);
- grid(0).cache(CACHE_NAME_LOC_2).put(KEY_VAL, KEY_VAL + 0);
- grid(1).cache(CACHE_NAME_LOC_1).put(KEY_VAL, KEY_VAL + 1);
- grid(1).cache(CACHE_NAME_LOC_2).put(KEY_VAL, KEY_VAL + 1);
-
- assert grid(0).cache(CACHE_NAME_1).get(KEY_VAL).equals(KEY_VAL);
- assert grid(0).cache(CACHE_NAME_2).get(KEY_VAL).equals(KEY_VAL);
- assert grid(0).cache(CACHE_NAME_3).get(KEY_VAL).equals(KEY_VAL);
- assert grid(0).cache(CACHE_NAME_4).get(KEY_VAL).equals(KEY_VAL);
- assert grid(0).cache(CACHE_NAME_LOC_1).get(KEY_VAL).equals(KEY_VAL + 0);
- assert grid(0).cache(CACHE_NAME_LOC_2).get(KEY_VAL).equals(KEY_VAL + 0);
- assert grid(1).cache(CACHE_NAME_LOC_1).get(KEY_VAL).equals(KEY_VAL + 1);
- assert grid(1).cache(CACHE_NAME_LOC_2).get(KEY_VAL).equals(KEY_VAL + 1);
+ CacheConfiguration cCfgD = defaultCacheConfiguration();
+ cCfgD.setName(CACHE_NAME_DESTROY_DHT);
+ cCfgD.setCacheMode(CacheMode.PARTITIONED);
+
+ CacheConfiguration cCfgC = defaultCacheConfiguration();
+ cCfgC.setName(CACHE_NAME_CLOSE_DHT);
+ cCfgC.setCacheMode(CacheMode.PARTITIONED);
+
+ CacheConfiguration cCfgDClient = defaultCacheConfiguration();
+ cCfgDClient.setName(CACHE_NAME_DESTROY_CLIENT);
+ cCfgDClient.setCacheMode(CacheMode.PARTITIONED);
+
+ CacheConfiguration cCfgCClient = defaultCacheConfiguration();
+ cCfgCClient.setName(CACHE_NAME_CLOSE_CLIENT);
+ cCfgCClient.setCacheMode(CacheMode.PARTITIONED);
+
+ CacheConfiguration cCfgDNear = defaultCacheConfiguration();
+ cCfgDNear.setName(CACHE_NAME_DESTROY_NEAR);
+ cCfgDNear.setCacheMode(CacheMode.PARTITIONED);
+ cCfgDNear.setNearConfiguration(new NearCacheConfiguration());
+
+ CacheConfiguration cCfgCNear = defaultCacheConfiguration();
+ cCfgCNear.setName(CACHE_NAME_CLOSE_NEAR);
+ cCfgCNear.setCacheMode(CacheMode.PARTITIONED);
+ cCfgCNear.setNearConfiguration(new NearCacheConfiguration());
+
+ CacheConfiguration cCfgDLoc = defaultCacheConfiguration();
+ cCfgDLoc.setName(CACHE_NAME_DESTROY_LOC);
+ cCfgDLoc.setCacheMode(CacheMode.LOCAL);
+
+ CacheConfiguration cCfgCLoc = defaultCacheConfiguration();
+ cCfgCLoc.setName(CACHE_NAME_CLOSE_LOC);
+ cCfgCLoc.setCacheMode(CacheMode.LOCAL);
+
+ grid(0).getOrCreateCache(cCfgD);
+ grid(0).getOrCreateCache(cCfgC);
+ grid(0).getOrCreateCache(cCfgDClient);
+ grid(0).getOrCreateCache(cCfgCClient);
+ grid(0).getOrCreateCache(cCfgDNear);
+ grid(0).getOrCreateCache(cCfgCNear);
+ grid(0).getOrCreateCache(cCfgDLoc);
+ grid(0).getOrCreateCache(cCfgCLoc);
+
+ grid(0).cache(CACHE_NAME_DESTROY_DHT).put(KEY_VAL, KEY_VAL);
+ grid(0).cache(CACHE_NAME_CLOSE_DHT).put(KEY_VAL, KEY_VAL);
+ grid(0).cache(CACHE_NAME_DESTROY_CLIENT).put(KEY_VAL, KEY_VAL);
+ grid(0).cache(CACHE_NAME_CLOSE_CLIENT).put(KEY_VAL, KEY_VAL);
+ grid(0).cache(CACHE_NAME_DESTROY_LOC).put(KEY_VAL, KEY_VAL + 0);
+ grid(0).cache(CACHE_NAME_CLOSE_LOC).put(KEY_VAL, KEY_VAL + 0);
+ grid(1).cache(CACHE_NAME_DESTROY_LOC).put(KEY_VAL, KEY_VAL + 1);
+ grid(1).cache(CACHE_NAME_CLOSE_LOC).put(KEY_VAL, KEY_VAL + 1);
+
+ assert grid(0).cache(CACHE_NAME_DESTROY_DHT).get(KEY_VAL).equals(KEY_VAL);
+ assert grid(0).cache(CACHE_NAME_CLOSE_DHT).get(KEY_VAL).equals(KEY_VAL);
+ assert grid(0).cache(CACHE_NAME_DESTROY_CLIENT).get(KEY_VAL).equals(KEY_VAL);
+ assert grid(0).cache(CACHE_NAME_CLOSE_CLIENT).get(KEY_VAL).equals(KEY_VAL);
+ assert grid(0).cache(CACHE_NAME_DESTROY_LOC).get(KEY_VAL).equals(KEY_VAL + 0);
+ assert grid(0).cache(CACHE_NAME_CLOSE_LOC).get(KEY_VAL).equals(KEY_VAL + 0);
+ assert grid(1).cache(CACHE_NAME_DESTROY_LOC).get(KEY_VAL).equals(KEY_VAL + 1);
+ assert grid(1).cache(CACHE_NAME_CLOSE_LOC).get(KEY_VAL).equals(KEY_VAL + 1);
//Destroy:
//DHT Destroy. Cache should be removed from each node.
- grid(0).cache(CACHE_NAME_1).destroy();
+
+ grid(0).cache(CACHE_NAME_DESTROY_DHT).destroy();
try {
- grid(0).cache(CACHE_NAME_1).get(KEY_VAL).equals(KEY_VAL);
+ grid(0).cache(CACHE_NAME_DESTROY_DHT).get(KEY_VAL);
assert false;
}
catch (IllegalArgumentException | IllegalStateException ignored0) {
try {
- grid(1).cache(CACHE_NAME_1).get(KEY_VAL).equals(KEY_VAL);
+ grid(1).cache(CACHE_NAME_DESTROY_DHT).get(KEY_VAL);
assert false;
}
catch (IllegalArgumentException | IllegalStateException ignored1) {
try {
- grid(2).cache(CACHE_NAME_1).get(KEY_VAL).equals(KEY_VAL);
+ grid(2).cache(CACHE_NAME_DESTROY_DHT).get(KEY_VAL);
assert false;
}
catch (IllegalArgumentException | IllegalStateException ignored2) {
@@ -148,20 +167,21 @@ public class CacheStopAndDestroySelfTest extends GridCommonAbstractTest {
}
//DHT Destroy from client node. Cache should be removed from each node.
- grid(2).cache(CACHE_NAME_2).destroy();// Client node.
+
+ grid(2).cache(CACHE_NAME_DESTROY_CLIENT).destroy();// Client node.
try {
- grid(0).cache(CACHE_NAME_2).get(KEY_VAL).equals(KEY_VAL);
+ grid(0).cache(CACHE_NAME_DESTROY_CLIENT).get(KEY_VAL);
assert false;
}
catch (IllegalArgumentException | IllegalStateException ignored0) {
try {
- grid(1).cache(CACHE_NAME_2).get(KEY_VAL).equals(KEY_VAL);
+ grid(1).cache(CACHE_NAME_DESTROY_CLIENT).get(KEY_VAL);
assert false;
}
catch (IllegalArgumentException | IllegalStateException ignored1) {
try {
- grid(2).cache(CACHE_NAME_2).get(KEY_VAL).equals(KEY_VAL);
+ grid(2).cache(CACHE_NAME_DESTROY_CLIENT).get(KEY_VAL);
assert false;
}
catch (IllegalArgumentException | IllegalStateException ignored2) {
@@ -171,20 +191,55 @@ public class CacheStopAndDestroySelfTest extends GridCommonAbstractTest {
}
//Local destroy. Cache should be removed from each node.
- grid(0).cache(CACHE_NAME_LOC_1).destroy();
+
+ grid(0).cache(CACHE_NAME_DESTROY_LOC).destroy();
+
+ try {
+ grid(0).cache(CACHE_NAME_DESTROY_LOC).get(KEY_VAL);
+ assert false;
+ }
+ catch (IllegalArgumentException | IllegalStateException ignored0) {
+ try {
+ grid(1).cache(CACHE_NAME_DESTROY_LOC).get(KEY_VAL);
+ assert false;
+ }
+ catch (IllegalArgumentException | IllegalStateException ignored1) {
+ try {
+ grid(2).cache(CACHE_NAME_DESTROY_LOC).get(KEY_VAL);
+ assert false;
+ }
+ catch (IllegalArgumentException | IllegalStateException ignored2) {
+ // No-op
+ }
+ }
+ }
+
+ //Near destroy. Cache should be removed from each node.
+
+ grid(0).createNearCache(CACHE_NAME_DESTROY_NEAR, new NearCacheConfiguration());
+ grid(1).createNearCache(CACHE_NAME_DESTROY_NEAR, new NearCacheConfiguration());
+ grid(2).createNearCache(CACHE_NAME_DESTROY_NEAR, new NearCacheConfiguration());
+
+ grid(0).cache(CACHE_NAME_DESTROY_NEAR).put(KEY_VAL, KEY_VAL);
+
+ assert grid(0).cache(CACHE_NAME_DESTROY_NEAR).get(KEY_VAL).equals(KEY_VAL);
+ assert grid(1).cache(CACHE_NAME_DESTROY_NEAR).get(KEY_VAL).equals(KEY_VAL);
+ assert grid(2).cache(CACHE_NAME_DESTROY_NEAR).get(KEY_VAL).equals(KEY_VAL);
+
+ grid(0).cache(CACHE_NAME_DESTROY_NEAR).destroy();
try {
- grid(0).cache(CACHE_NAME_LOC_1).get(KEY_VAL).equals(KEY_VAL);
+ grid(0).cache(CACHE_NAME_DESTROY_NEAR).get(KEY_VAL);
assert false;
}
catch (IllegalArgumentException | IllegalStateException ignored0) {
try {
- grid(1).cache(CACHE_NAME_LOC_1).get(KEY_VAL).equals(KEY_VAL);
+ grid(1).cache(CACHE_NAME_DESTROY_NEAR).get(KEY_VAL);
assert false;
}
catch (IllegalArgumentException | IllegalStateException ignored1) {
try {
- grid(2).cache(CACHE_NAME_LOC_1).get(KEY_VAL).equals(KEY_VAL);
+ grid(2).cache(CACHE_NAME_DESTROY_NEAR).get(KEY_VAL);
assert false;
}
catch (IllegalArgumentException | IllegalStateException ignored2) {
@@ -196,41 +251,98 @@ public class CacheStopAndDestroySelfTest extends GridCommonAbstractTest {
//Close:
//DHT Close. No-op.
- grid(0).cache(CACHE_NAME_3).close();
- assert grid(0).cache(CACHE_NAME_3).get(KEY_VAL).equals(KEY_VAL);// Not affected.
- assert grid(1).cache(CACHE_NAME_3).get(KEY_VAL).equals(KEY_VAL);// Not affected.
- assert grid(2).cache(CACHE_NAME_3).get(KEY_VAL).equals(KEY_VAL);// Not affected.
+ grid(0).cache(CACHE_NAME_CLOSE_DHT).close();
+
+ assert grid(0).cache(CACHE_NAME_CLOSE_DHT).get(KEY_VAL).equals(KEY_VAL);// Not affected.
+ assert grid(1).cache(CACHE_NAME_CLOSE_DHT).get(KEY_VAL).equals(KEY_VAL);// Not affected.
+ assert grid(2).cache(CACHE_NAME_CLOSE_DHT).get(KEY_VAL).equals(KEY_VAL);// Not affected.
+
+ //DHT Creation after closed.
+
+ grid(0).getOrCreateCache(cCfgC);
+
+ grid(0).cache(CACHE_NAME_CLOSE_DHT).put(KEY_VAL, KEY_VAL + "recreated");
+
+ assert grid(0).cache(CACHE_NAME_CLOSE_DHT).get(KEY_VAL).equals(KEY_VAL + "recreated");
+ assert grid(1).cache(CACHE_NAME_CLOSE_DHT).get(KEY_VAL).equals(KEY_VAL + "recreated");
+ assert grid(2).cache(CACHE_NAME_CLOSE_DHT).get(KEY_VAL).equals(KEY_VAL + "recreated");
//DHT Close from client node. Should affect only client node.
- grid(2).cache(CACHE_NAME_4).close();// Client node.
- assert grid(0).cache(CACHE_NAME_4).get(KEY_VAL).equals(KEY_VAL);// Not affected.
- assert grid(1).cache(CACHE_NAME_4).get(KEY_VAL).equals(KEY_VAL);// Not affected.
+ grid(2).cache(CACHE_NAME_CLOSE_CLIENT).close();// Client node.
+
+ assert grid(0).cache(CACHE_NAME_CLOSE_CLIENT).get(KEY_VAL).equals(KEY_VAL);// Not affected.
+ assert grid(1).cache(CACHE_NAME_CLOSE_CLIENT).get(KEY_VAL).equals(KEY_VAL);// Not affected.
try {
- grid(2).cache(CACHE_NAME_4).get(KEY_VAL).equals(KEY_VAL);// Affected.
+ grid(2).cache(CACHE_NAME_CLOSE_CLIENT).get(KEY_VAL);// Affected.
assert false;
}
catch (IllegalArgumentException | IllegalStateException ignored) {
// No-op
}
+ //DHT Creation from client node after closed.
+
+ grid(2).getOrCreateCache(cCfgCClient);
+
+ grid(0).cache(CACHE_NAME_CLOSE_CLIENT).put(KEY_VAL, KEY_VAL + "recreated");
+
+ assert grid(0).cache(CACHE_NAME_CLOSE_CLIENT).get(KEY_VAL).equals(KEY_VAL + "recreated");
+ assert grid(1).cache(CACHE_NAME_CLOSE_CLIENT).get(KEY_VAL).equals(KEY_VAL + "recreated");
+ assert grid(2).cache(CACHE_NAME_CLOSE_CLIENT).get(KEY_VAL).equals(KEY_VAL + "recreated");
+
+ //Near Close from client node.
+
+ grid(2).createNearCache(CACHE_NAME_CLOSE_NEAR, new NearCacheConfiguration());
+
+ //Subscribing to events.
+ grid(2).cache(CACHE_NAME_CLOSE_NEAR).put(KEY_VAL, KEY_VAL);
+
+ grid(2).cache(CACHE_NAME_CLOSE_NEAR).close();
+
+ //Should not produce messages to client node.
+ grid(0).cache(CACHE_NAME_CLOSE_NEAR).put(KEY_VAL, KEY_VAL + 0);
+
+ assert grid(0).cache(CACHE_NAME_CLOSE_NEAR).get(KEY_VAL).equals(KEY_VAL + 0);// Not affected.
+ assert grid(1).cache(CACHE_NAME_CLOSE_NEAR).get(KEY_VAL).equals(KEY_VAL + 0);// Not affected.
+
+ try {
+ grid(2).cache(CACHE_NAME_CLOSE_NEAR).get(KEY_VAL);// Affected.
+ assert false;
+ }
+ catch (IllegalArgumentException | IllegalStateException ignored) {
+ // No-op
+ }
+
+ //Near Creation from client node after closed.
+
+ grid(2).getOrCreateCache(cCfgCNear);
+ grid(2).createNearCache(CACHE_NAME_CLOSE_NEAR, new NearCacheConfiguration());
+
+ grid(0).cache(CACHE_NAME_CLOSE_NEAR).put(KEY_VAL, KEY_VAL + "recreated");
+
+ assert grid(0).cache(CACHE_NAME_CLOSE_NEAR).get(KEY_VAL).equals(KEY_VAL + "recreated");
+ assert grid(1).cache(CACHE_NAME_CLOSE_NEAR).get(KEY_VAL).equals(KEY_VAL + "recreated");
+ assert grid(2).cache(CACHE_NAME_CLOSE_NEAR).get(KEY_VAL).equals(KEY_VAL + "recreated");
+
//Local close. Same as Local destroy.
- grid(1).cache(CACHE_NAME_LOC_2).close();
+
+ grid(1).cache(CACHE_NAME_CLOSE_LOC).close();
try {
- grid(0).cache(CACHE_NAME_LOC_2).get(KEY_VAL).equals(KEY_VAL);
+ grid(0).cache(CACHE_NAME_CLOSE_LOC).get(KEY_VAL);
assert false;
}
catch (IllegalArgumentException | IllegalStateException ignored0) {
try {
- grid(1).cache(CACHE_NAME_LOC_2).get(KEY_VAL).equals(KEY_VAL);
+ grid(1).cache(CACHE_NAME_CLOSE_LOC).get(KEY_VAL);
assert false;
}
catch (IllegalArgumentException | IllegalStateException ignored1) {
try {
- grid(2).cache(CACHE_NAME_LOC_2).get(KEY_VAL).equals(KEY_VAL);
+ grid(2).cache(CACHE_NAME_CLOSE_LOC).get(KEY_VAL);
assert false;
}
catch (IllegalArgumentException | IllegalStateException ignored2) {
@@ -238,5 +350,17 @@ public class CacheStopAndDestroySelfTest extends GridCommonAbstractTest {
}
}
}
+
+ //Local creation after closed.
+
+ grid(0).getOrCreateCache(cCfgCLoc);
+
+ grid(0).cache(CACHE_NAME_CLOSE_LOC).put(KEY_VAL, KEY_VAL + "recreated0");
+ grid(1).cache(CACHE_NAME_CLOSE_LOC).put(KEY_VAL, KEY_VAL + "recreated1");
+ grid(2).cache(CACHE_NAME_CLOSE_LOC).put(KEY_VAL, KEY_VAL + "recreated2");
+
+ assert grid(0).cache(CACHE_NAME_CLOSE_LOC).get(KEY_VAL).equals(KEY_VAL + "recreated0");
+ assert grid(1).cache(CACHE_NAME_CLOSE_LOC).get(KEY_VAL).equals(KEY_VAL + "recreated1");
+ assert grid(2).cache(CACHE_NAME_CLOSE_LOC).get(KEY_VAL).equals(KEY_VAL + "recreated2");
}
}