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/07/03 12:23:06 UTC
incubator-ignite git commit: # ignite-648: improve framework
Repository: incubator-ignite
Updated Branches:
refs/heads/ignite-648 69e44129f -> 1d4949d39
# ignite-648: improve framework
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/1d4949d3
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/1d4949d3
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/1d4949d3
Branch: refs/heads/ignite-648
Commit: 1d4949d39c3b4be4a6b5194c883d5b7304041dcb
Parents: 69e4412
Author: ashutak <as...@gridgain.com>
Authored: Fri Jul 3 13:23:02 2015 +0300
Committer: ashutak <as...@gridgain.com>
Committed: Fri Jul 3 13:23:02 2015 +0300
----------------------------------------------------------------------
.../cache/GridCacheAbstractFullApiSelfTest.java | 87 +++++----
...idCacheNearOnlyMultiNodeFullApiSelfTest.java | 8 -
...ReplicatedAtomicMultiJvmFullApiSelfTest.java | 2 +-
.../testframework/junits/GridAbstractTest.java | 189 +++++++++++++++++++
4 files changed, 232 insertions(+), 54 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1d4949d3/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 4e31771..43202b4 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
@@ -385,7 +385,7 @@ public abstract class GridCacheAbstractFullApiSelfTest extends GridCacheAbstract
*/
public void testRemoveAllSkipStore() throws Exception {
if (isMultiJvm())
- return;
+ fail("https://issues.apache.org/jira/browse/IGNITE-648");
IgniteCache<String, Integer> jcache = jcache();
@@ -3188,6 +3188,9 @@ public abstract class GridCacheAbstractFullApiSelfTest extends GridCacheAbstract
* @throws Exception If failed.
*/
protected void checkTtl(boolean inTx, boolean oldEntry) throws Exception {
+ if (isMultiJvm())
+ fail("https://issues.apache.org/jira/browse/IGNITE-648");
+
if (memoryMode() == OFFHEAP_TIERED)
return;
@@ -3256,20 +3259,18 @@ public abstract class GridCacheAbstractFullApiSelfTest extends GridCacheAbstract
for (int i = 0; i < gridCount(); i++) {
if (grid(i).affinity(null).isPrimaryOrBackup(grid(i).localNode(), key)) {
- if (!isMultiJvmAndNodeIsRemote(i)) {
- GridCacheAdapter<String, Integer> cache = internalCache(jcache(i));
+ GridCacheAdapter<String, Integer> cache = internalCache(jcache(i));
- if (cache.context().isNear())
- cache = cache.context().near().dht();
+ if (cache.context().isNear())
+ cache = cache.context().near().dht();
- GridCacheEntryEx curEntry = cache.peekEx(key);
+ GridCacheEntryEx curEntry = cache.peekEx(key);
- assertEquals(ttl, curEntry.ttl());
+ assertEquals(ttl, curEntry.ttl());
- assert curEntry.expireTime() > startTime;
+ assert curEntry.expireTime() > startTime;
- expireTimes[i] = curEntry.expireTime();
- }
+ expireTimes[i] = curEntry.expireTime();
}
}
@@ -3291,20 +3292,18 @@ public abstract class GridCacheAbstractFullApiSelfTest extends GridCacheAbstract
for (int i = 0; i < gridCount(); i++) {
if (grid(i).affinity(null).isPrimaryOrBackup(grid(i).localNode(), key)) {
- if (!isMultiJvmAndNodeIsRemote(i)) {
- GridCacheAdapter<String, Integer> cache = internalCache(jcache(i));
+ GridCacheAdapter<String, Integer> cache = internalCache(jcache(i));
- if (cache.context().isNear())
- cache = cache.context().near().dht();
+ if (cache.context().isNear())
+ cache = cache.context().near().dht();
- GridCacheEntryEx curEntry = cache.peekEx(key);
+ GridCacheEntryEx curEntry = cache.peekEx(key);
- assertEquals(ttl, curEntry.ttl());
+ assertEquals(ttl, curEntry.ttl());
- assert curEntry.expireTime() > startTime;
+ assert curEntry.expireTime() > startTime;
- expireTimes[i] = curEntry.expireTime();
- }
+ expireTimes[i] = curEntry.expireTime();
}
}
@@ -3326,20 +3325,18 @@ public abstract class GridCacheAbstractFullApiSelfTest extends GridCacheAbstract
for (int i = 0; i < gridCount(); i++) {
if (grid(i).affinity(null).isPrimaryOrBackup(grid(i).localNode(), key)) {
- if (!isMultiJvmAndNodeIsRemote(i)) {
- GridCacheAdapter<String, Integer> cache = internalCache(jcache(i));
+ GridCacheAdapter<String, Integer> cache = internalCache(jcache(i));
- if (cache.context().isNear())
- cache = cache.context().near().dht();
+ if (cache.context().isNear())
+ cache = cache.context().near().dht();
- GridCacheEntryEx curEntry = cache.peekEx(key);
+ GridCacheEntryEx curEntry = cache.peekEx(key);
- assertEquals(ttl, curEntry.ttl());
+ assertEquals(ttl, curEntry.ttl());
- assert curEntry.expireTime() > startTime;
+ assert curEntry.expireTime() > startTime;
- expireTimes[i] = curEntry.expireTime();
- }
+ expireTimes[i] = curEntry.expireTime();
}
}
@@ -3365,17 +3362,15 @@ public abstract class GridCacheAbstractFullApiSelfTest extends GridCacheAbstract
for (int i = 0; i < gridCount(); i++) {
if (grid(i).affinity(null).isPrimaryOrBackup(grid(i).localNode(), key)) {
- if (!isMultiJvmAndNodeIsRemote(i)) {
- GridCacheAdapter<String, Integer> cache = internalCache(jcache(i));
+ GridCacheAdapter<String, Integer> cache = internalCache(jcache(i));
- if (cache.context().isNear())
- cache = cache.context().near().dht();
+ if (cache.context().isNear())
+ cache = cache.context().near().dht();
- GridCacheEntryEx curEntry = cache.peekEx(key);
+ GridCacheEntryEx curEntry = cache.peekEx(key);
- assertEquals(ttl, curEntry.ttl());
- assertEquals(expireTimes[i], curEntry.expireTime());
- }
+ assertEquals(ttl, curEntry.ttl());
+ assertEquals(expireTimes[i], curEntry.expireTime());
}
}
@@ -4152,8 +4147,7 @@ public abstract class GridCacheAbstractFullApiSelfTest extends GridCacheAbstract
checkIteratorRemove(cache, entries);
- if(!isMultiJvm())
- checkIteratorEmpty(cache);
+ checkIteratorEmpty(cache);
}
/**
@@ -4261,13 +4255,16 @@ public abstract class GridCacheAbstractFullApiSelfTest extends GridCacheAbstract
*/
private void checkIteratorsCleared() {
for (int j = 0; j < gridCount(); j++) {
+ runOnLocalOrRemoteJvm(j, new IndexSerializableJob() {
+ @Override public void run(int i) throws Exception {
+ GridCacheQueryManager queries = context(i).queries();
- GridCacheQueryManager queries = context(j).queries();
+ Map map = GridTestUtils.getFieldValue(queries, GridCacheQueryManager.class, "qryIters");
- Map map = GridTestUtils.getFieldValue(queries, GridCacheQueryManager.class, "qryIters");
-
- for (Object obj : map.values())
- assertEquals("Iterators not removed for grid " + j, 0, ((Map) obj).size());
+ for (Object obj : map.values())
+ assertEquals("Iterators not removed for grid " + i, 0, ((Map)obj).size());
+ }
+ });
}
}
@@ -4515,7 +4512,7 @@ public abstract class GridCacheAbstractFullApiSelfTest extends GridCacheAbstract
*/
public void testWithSkipStore() throws Exception {
if(isMultiJvm())
- return;
+ fail("https://issues.apache.org/jira/browse/IGNITE-648");
IgniteCache<String, Integer> cache = grid(0).cache(null);
@@ -4727,7 +4724,7 @@ public abstract class GridCacheAbstractFullApiSelfTest extends GridCacheAbstract
*/
public void testWithSkipStoreRemoveAll() throws Exception {
if (isMultiJvm())
- return;
+ fail("https://issues.apache.org/jira/browse/IGNITE-648");
if (atomicityMode() == TRANSACTIONAL || (atomicityMode() == ATOMIC && nearEnabled())) // TODO IGNITE-373.
return;
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1d4949d3/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCacheNearOnlyMultiNodeFullApiSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCacheNearOnlyMultiNodeFullApiSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCacheNearOnlyMultiNodeFullApiSelfTest.java
index 3d9364b..23d78f4 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCacheNearOnlyMultiNodeFullApiSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCacheNearOnlyMultiNodeFullApiSelfTest.java
@@ -137,14 +137,6 @@ public class GridCacheNearOnlyMultiNodeFullApiSelfTest extends GridCachePartitio
return nearIdx == 0 ? jcache(1) : jcache(0);
}
- /** {@inheritDoc} */
- @Override protected void checkTtl(boolean inTx, boolean oldEntry) throws Exception {
- if (isMultiJvm())
- fail("https://issues.apache.org/jira/browse/IGNITE-648");
-
- super.checkTtl(inTx, oldEntry);
- }
-
/**
* @return For the purpose of this test returns the near-only instance.
*/
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1d4949d3/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/multijvm/GridCacheReplicatedAtomicMultiJvmFullApiSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/multijvm/GridCacheReplicatedAtomicMultiJvmFullApiSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/multijvm/GridCacheReplicatedAtomicMultiJvmFullApiSelfTest.java
index 1a92030..a4a50a4 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/multijvm/GridCacheReplicatedAtomicMultiJvmFullApiSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/multijvm/GridCacheReplicatedAtomicMultiJvmFullApiSelfTest.java
@@ -22,7 +22,7 @@ import org.apache.ignite.internal.processors.cache.distributed.replicated.*;
/**
* Multy Jvm tests.
*/
-public class GridCacheReplicatedAtomicMultiJvmFullApiSelfTest extends
+public class GridCacheReplicatedAtomicMultiJvmFullApiSelfTest extends
GridCacheReplicatedAtomicMultiNodeFullApiSelfTest {
/** {@inheritDoc} */
protected boolean isMultiJvm() {
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1d4949d3/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java b/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java
index 732af54..94fa248 100644
--- a/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java
@@ -1366,6 +1366,14 @@ public abstract class GridAbstractTest extends TestCase {
* Gets flag whether nodes will run in one jvm or in separate jvms.
*
* @return <code>True</code> to run nodes in separate jvms.
+ * @see IgniteNodeRunner
+ * @see IgniteProcessProxy
+ * @see #runRemotely(int, IndexSerializableJob)
+ * @see #runRemotely(IgniteProcessProxy, IgniteSerializableJob)
+ * @see #runRemotely(IgniteCacheProcessProxy, CacheSerializiableJob)
+ * @see #runOnLocalOrRemoteJvm(int, IndexSerializableJob)
+ * @see #runOnLocalOrRemoteJvm(Ignite, IgniteSerializableJob)
+ * @see #runOnLocalOrRemoteJvm(IgniteCache, CacheSerializiableJob)
*/
protected boolean isMultiJvm() {
return false;
@@ -1395,6 +1403,156 @@ public abstract class GridAbstractTest extends TestCase {
}
/**
+ * @param cache Cache.
+ * @return <code>True</code> if cache is an instance of {@link IgniteCacheProcessProxy}
+ */
+ public static boolean isMultiJvmObject(IgniteCache cache) {
+ return cache instanceof IgniteCacheProcessProxy;
+ }
+
+ /**
+ * @param ignite Ignite.
+ * @return <code>True</code> if cache is an instance of {@link IgniteProcessProxy}
+ */
+ public static boolean isMultiJvmObject(Ignite ignite) {
+ return ignite instanceof IgniteProcessProxy;
+ }
+
+ /**
+ * Runs job on local jvm or on remote jvm in multi jvm case.
+ *
+ * @param idx Grid index.
+ * @param job Job.
+ */
+ public void runOnLocalOrRemoteJvm(final int idx, final IndexSerializableJob job) {
+ IgniteEx ignite = grid(idx);
+
+ if (!isMultiJvmObject(ignite))
+ try {
+ job.run(idx);
+ }
+ catch (Exception e) {
+ throw new IgniteException(e);
+ }
+ else
+ runRemotely(idx, job);
+ }
+
+ /**
+ * Runs job on local jvm or on remote jvm in multi jvm case.
+ *
+ * @param ignite Ignite.
+ * @param job Job.
+ */
+ public void runOnLocalOrRemoteJvm(Ignite ignite, final IgniteSerializableJob job) {
+ if (!isMultiJvmObject(ignite))
+ try {
+ job.run(ignite);
+ }
+ catch (Exception e) {
+ throw new IgniteException(e);
+ }
+ else
+ runRemotely((IgniteProcessProxy)ignite, job);
+ }
+
+ /**
+ * Runs job on local jvm or on remote jvm in multi jvm case.
+ *
+ * @param cache Cache.
+ * @param job Job.
+ */
+ public <K,V> void runOnLocalOrRemoteJvm(IgniteCache<K,V> cache, CacheSerializiableJob<K,V> job) {
+ Ignite ignite = cache.unwrap(Ignite.class);
+
+ if (!isMultiJvmObject(ignite))
+ try {
+ job.run(ignite, cache);
+ }
+ catch (Exception e) {
+ throw new IgniteException(e);
+ }
+ else
+ runRemotely((IgniteCacheProcessProxy<K, V>)cache, job);
+ }
+
+ /**
+ * Runs job on remote jvm.
+ *
+ * @param idx Grid index.
+ * @param job Job.
+ */
+ public void runRemotely(final int idx, final IndexSerializableJob job) {
+ IgniteEx ignite = grid(idx);
+
+ if (!isMultiJvmObject(ignite))
+ throw new IllegalArgumentException("Ignite have to be process proxy.");
+
+ IgniteProcessProxy proxy = (IgniteProcessProxy)ignite;
+
+ proxy.remoteCompute().run(new CAX() {
+ @Override public void applyx() throws IgniteCheckedException {
+ try {
+ job.run(idx);
+ }
+ catch (Exception e) {
+ throw new IgniteCheckedException(e);
+ }
+ }
+ });
+ }
+
+ /**
+ * Runs job on remote jvm.
+ *
+ * @param proxy Ignite.
+ * @param job Job.
+ */
+ public static void runRemotely(IgniteProcessProxy proxy, final IgniteSerializableJob job) {
+ final UUID id = proxy.getId();
+
+ proxy.remoteCompute().run(new CAX() {
+ @Override public void applyx() throws IgniteCheckedException {
+ Ignite ignite = Ignition.ignite(id);
+
+ try {
+ job.run(ignite);
+ }
+ catch (Exception e) {
+ throw new IgniteCheckedException(e);
+ }
+ }
+ });
+ }
+
+ /**
+ * Runs job on remote jvm.
+ *
+ * @param cache Cache.
+ * @param job Job.
+ */
+ public static <K, V> void runRemotely(IgniteCacheProcessProxy<K, V> cache, final CacheSerializiableJob<K,V> job) {
+ IgniteProcessProxy proxy = (IgniteProcessProxy)cache.unwrap(Ignite.class);
+
+ final UUID id = proxy.getId();
+ final String cacheName = cache.getName();
+
+ proxy.remoteCompute().run(new CAX() {
+ @Override public void applyx() throws IgniteCheckedException {
+ Ignite ignite = Ignition.ignite(id);
+ IgniteCache<K,V> cache = ignite.cache(cacheName);
+
+ try {
+ job.run(ignite, cache);
+ }
+ catch (Exception e) {
+ throw new IgniteCheckedException(e);
+ }
+ }
+ });
+ }
+
+ /**
* @return Test counters.
*/
protected synchronized TestCounters getTestCounters() throws IgniteCheckedException {
@@ -1707,4 +1865,35 @@ public abstract class GridAbstractTest extends TestCase {
return numOfTests;
}
}
+
+ /**
+ * Serializable runnable.
+ */
+ public static interface IgniteSerializableJob extends Serializable {
+ /**
+ * @param ignite Ignite.
+ */
+ void run(Ignite ignite) throws Exception;
+ }
+
+ /**
+ * Serializiable runnable.
+ */
+ public static interface IndexSerializableJob extends Serializable {
+ /**
+ * @param idx Grid index.
+ */
+ void run(int idx) throws Exception;
+ }
+
+ /**
+ * Serializiable runnable.
+ */
+ public static interface CacheSerializiableJob<K, V> extends Serializable {
+ /**
+ * @param ignite Ignite.
+ * @param cache Cache.
+ */
+ void run(Ignite ignite, IgniteCache<K, V> cache) throws Exception;
+ }
}