Repository: ignite
Updated Branches:
  refs/heads/master ecca3e3ed -> cf7003cd3


IGNITE-9532 Binary mode for Ignite Queue uday 2018-10-09 21:11 - Fixes #4720.

Signed-off-by: Dmitriy Pavlov <[email protected]>


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

Branch: refs/heads/master
Commit: cf7003cd3272c38685f482a9635a9abe2d9a13bf
Parents: ecca3e3
Author: uday <[email protected]>
Authored: Thu Dec 13 20:57:24 2018 +0300
Committer: Dmitriy Pavlov <[email protected]>
Committed: Thu Dec 13 20:57:24 2018 +0300

----------------------------------------------------------------------
 .../java/org/apache/ignite/IgniteQueue.java     |   8 +
 .../datastructures/GridCacheQueueAdapter.java   |  34 +++-
 .../datastructures/GridCacheQueueProxy.java     |  12 ++
 .../GridCacheQueueApiSelfAbstractTest.java      | 197 ++++++++++++-------
 ...eCacheDataStructuresBinarySelfTestSuite.java |  51 +++++
 .../IgniteCacheDataStructuresSelfTestSuite.java |   4 +-
 6 files changed, 228 insertions(+), 78 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/cf7003cd/modules/core/src/main/java/org/apache/ignite/IgniteQueue.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/IgniteQueue.java 
b/modules/core/src/main/java/org/apache/ignite/IgniteQueue.java
index 2dc38e7..98fc605 100644
--- a/modules/core/src/main/java/org/apache/ignite/IgniteQueue.java
+++ b/modules/core/src/main/java/org/apache/ignite/IgniteQueue.java
@@ -204,4 +204,12 @@ public interface IgniteQueue<T> extends BlockingQueue<T>, 
Closeable {
      * @throws IgniteException If job failed.
      */
     public <R> R affinityCall(IgniteCallable<R> job) throws IgniteException;
+
+    /**
+     * Returns queue that will operate with binary objects. This is similar to 
{@link IgniteCache#withKeepBinary()} but
+     * for queues.
+     *
+     * @return New queue instance for binary objects.
+     */
+    public <V1> IgniteQueue<V1> withKeepBinary();
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/cf7003cd/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/GridCacheQueueAdapter.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/GridCacheQueueAdapter.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/GridCacheQueueAdapter.java
index d591a29..e3a77c5 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/GridCacheQueueAdapter.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/GridCacheQueueAdapter.java
@@ -37,6 +37,8 @@ import org.apache.ignite.IgniteException;
 import org.apache.ignite.IgniteInterruptedException;
 import org.apache.ignite.IgniteLogger;
 import org.apache.ignite.IgniteQueue;
+import org.apache.ignite.binary.BinaryObject;
+import org.apache.ignite.internal.processors.cache.CacheOperationContext;
 import org.apache.ignite.internal.processors.cache.GridCacheAdapter;
 import org.apache.ignite.internal.processors.cache.GridCacheContext;
 import org.apache.ignite.internal.util.tostring.GridToStringExclude;
@@ -51,6 +53,7 @@ import org.apache.ignite.lang.IgniteUuid;
 import org.jetbrains.annotations.Nullable;
 
 import static java.util.concurrent.TimeUnit.MILLISECONDS;
+import static 
org.apache.ignite.internal.processors.cache.CacheOperationContext.DFLT_ALLOW_ATOMIC_OPS_IN_TX;
 
 /**
  * Common code for {@link IgniteQueue} implementation.
@@ -363,12 +366,14 @@ public abstract class GridCacheQueueAdapter<T> extends 
AbstractCollection<T> imp
         A.ensure(batchSize >= 0, "Batch size cannot be negative: " + 
batchSize);
 
         try {
-            IgniteBiTuple<Long, Long> t =
-                (IgniteBiTuple<Long, Long>)cache.invoke(queueKey, new 
ClearProcessor(id)).get();
+            Object obj = cache.invoke(queueKey, new ClearProcessor(id)).get();
 
-            if (t == null)
+            if (obj == null)
                 return;
 
+            IgniteBiTuple<Long, Long> t = obj instanceof BinaryObject ? 
((BinaryObject)obj).deserialize()
+                : (IgniteBiTuple<Long, Long>)obj;
+
             checkRemoved(t.get1());
 
             removeKeys(cache, id, queueName, collocated, t.get1(), t.get2(), 
batchSize);
@@ -422,6 +427,29 @@ public abstract class GridCacheQueueAdapter<T> extends 
AbstractCollection<T> imp
         return compute.affinityCall(cache.name(), queueKey, job);
     }
 
+    /** {@inheritDoc} */
+    @Override public <V1> IgniteQueue<V1> withKeepBinary() {
+        CacheOperationContext opCtx = cctx.operationContextPerCall();
+
+        if (opCtx != null && opCtx.isKeepBinary())
+            return (GridCacheQueueAdapter<V1>)this;
+
+        opCtx = opCtx == null ? new CacheOperationContext(
+            false,
+            null,
+            true,
+            null,
+            false,
+            null,
+            false,
+            DFLT_ALLOW_ATOMIC_OPS_IN_TX)
+            : opCtx.keepBinary();
+
+        cctx.operationContextPerCall(opCtx);
+
+        return (GridCacheQueueAdapter<V1>)this;
+    }
+
     /**
      * @param cache Queue cache.
      * @param id Queue unique ID.

http://git-wip-us.apache.org/repos/asf/ignite/blob/cf7003cd/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/GridCacheQueueProxy.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/GridCacheQueueProxy.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/GridCacheQueueProxy.java
index 627f8ec..7a1b92b 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/GridCacheQueueProxy.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/GridCacheQueueProxy.java
@@ -447,6 +447,18 @@ public class GridCacheQueueProxy<T> implements 
IgniteQueue<T>, Externalizable {
     }
 
     /** {@inheritDoc} */
+    @Override public <V1> IgniteQueue<V1> withKeepBinary() {
+        gate.enter();
+
+        try {
+            return new GridCacheQueueProxy<>(cctx, 
(GridCacheQueueAdapter<V1>)delegate.withKeepBinary());
+        }
+        finally {
+            gate.leave();
+        }
+    }
+
+    /** {@inheritDoc} */
     @Override public int hashCode() {
         return delegate.hashCode();
     }

http://git-wip-us.apache.org/repos/asf/ignite/blob/cf7003cd/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/GridCacheQueueApiSelfAbstractTest.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/GridCacheQueueApiSelfAbstractTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/GridCacheQueueApiSelfAbstractTest.java
index d25f405..f018aca 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/GridCacheQueueApiSelfAbstractTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/datastructures/GridCacheQueueApiSelfAbstractTest.java
@@ -29,6 +29,8 @@ import org.apache.ignite.Ignite;
 import org.apache.ignite.IgniteCache;
 import org.apache.ignite.IgniteException;
 import org.apache.ignite.IgniteQueue;
+import org.apache.ignite.IgniteSystemProperties;
+import org.apache.ignite.binary.BinaryObject;
 import org.apache.ignite.cache.CacheMode;
 import org.apache.ignite.cluster.ClusterNode;
 import org.apache.ignite.configuration.CacheConfiguration;
@@ -43,6 +45,7 @@ import org.apache.ignite.lang.IgniteRunnable;
 import org.apache.ignite.resources.IgniteInstanceResource;
 import org.apache.ignite.testframework.GridTestUtils;
 import org.apache.ignite.transactions.Transaction;
+import org.jetbrains.annotations.Nullable;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.JUnit4;
@@ -56,6 +59,12 @@ import static 
org.apache.ignite.cache.CacheWriteSynchronizationMode.FULL_SYNC;
  */
 @RunWith(JUnit4.class)
 public abstract class GridCacheQueueApiSelfAbstractTest extends 
IgniteCollectionAbstractTest {
+    /** To be used as a boolean system property. If true then run binary 
tests. */
+    public static final String BINARY_QUEUE = "BINARY_QUEUE";
+
+    /** Binary queue mode. */
+    private static final boolean BINARY_QUEUE_MODE = 
IgniteSystemProperties.getBoolean(BINARY_QUEUE, false);
+
     /** */
     private static final int QUEUE_CAPACITY = 3;
 
@@ -68,6 +77,19 @@ public abstract class GridCacheQueueApiSelfAbstractTest 
extends IgniteCollection
     }
 
     /**
+     * Intialize Ignite queue
+     */
+    protected <T> IgniteQueue<T> initQueue(int idx, String name, int cap,
+        @Nullable CollectionConfiguration cfg) {
+        IgniteQueue<T> queue = grid(idx).queue(name, cap, cfg);
+
+        if (queue != null && BINARY_QUEUE_MODE)
+            return queue.withKeepBinary();
+
+        return queue;
+    }
+
+    /**
      * JUnit.
      *
      * @throws Exception If failed.
@@ -80,9 +102,9 @@ public abstract class GridCacheQueueApiSelfAbstractTest 
extends IgniteCollection
 
         CollectionConfiguration colCfg = config(false);
 
-        IgniteQueue queue1 = grid(0).queue(queueName1, 0, colCfg);
-        IgniteQueue queue2 = grid(0).queue(queueName2, 0, colCfg);
-        IgniteQueue queue3 = grid(0).queue(queueName1, 0, colCfg);
+        IgniteQueue queue1 = initQueue(0, queueName1, 0, colCfg);
+        IgniteQueue queue2 = initQueue(0, queueName2, 0, colCfg);
+        IgniteQueue queue3 = initQueue(0, queueName1, 0, colCfg);
 
         assertNotNull(queue1);
         assertNotNull(queue2);
@@ -95,8 +117,8 @@ public abstract class GridCacheQueueApiSelfAbstractTest 
extends IgniteCollection
         queue2.close();
         queue3.close();
 
-        assertNull(grid(0).queue(queueName1, 0, null));
-        assertNull(grid(0).queue(queueName2, 0, null));
+        assertNull(initQueue(0, queueName1, 0, null));
+        assertNull(initQueue(0, queueName2, 0, null));
     }
 
     /**
@@ -111,7 +133,7 @@ public abstract class GridCacheQueueApiSelfAbstractTest 
extends IgniteCollection
 
         String val = UUID.randomUUID().toString();
 
-        IgniteQueue<String> queue = grid(0).queue(queueName, 0, config(false));
+        IgniteQueue<String> queue = initQueue(0, queueName, 0, config(false));
 
         assert queue.add(val);
 
@@ -130,7 +152,7 @@ public abstract class GridCacheQueueApiSelfAbstractTest 
extends IgniteCollection
 
         String val = UUID.randomUUID().toString();
 
-        IgniteQueue<String> queue = grid(0).queue(queueName, 0, config(false));
+        IgniteQueue<String> queue = initQueue(0, queueName, 0, config(false));
 
         assert queue.add(val);
 
@@ -145,73 +167,71 @@ public abstract class GridCacheQueueApiSelfAbstractTest 
extends IgniteCollection
      * @throws Exception If failed.
      */
     @Test
-    public void testCollectionMethods() throws Exception {
+    public <T> void testCollectionMethods() throws Exception {
         // Random queue name.
         String queueName = UUID.randomUUID().toString();
 
-        IgniteQueue<SameHashItem> queue = grid(0).queue(queueName, 0, 
config(false));
+        IgniteQueue<T> queue = initQueue(0, queueName, 0, config(false));
+
+        SameHashInstanceFactory<T> factory = new 
SameHashInstanceFactory<T>(grid(0));
 
         int retries = 100;
 
         // Initialize queue.
         for (int i = 0; i < retries; i++)
-            queue.addAll(Arrays.asList(new SameHashItem(Integer.toString(i)), 
new SameHashItem(Integer.toString(i))));
+            queue.addAll(Arrays.asList(factory.instance(i), 
factory.instance(i)));
 
         // Get arrays from queue.
         assertEquals(retries * 2, queue.toArray().length);
 
-        SameHashItem[] arr2 = new SameHashItem[retries * 3];
+        T[] arr2 = factory.array(retries * 3);
 
         Object[] arr3 = queue.toArray(arr2);
 
         assertEquals(arr2, arr3);
-        assertEquals(arr3[0], new SameHashItem("0"));
+        assertEquals(arr3[0], factory.instance(0));
 
         // Check queue items.
         assertEquals(retries * 2, queue.size());
 
-        assertTrue(queue.contains(new SameHashItem(Integer.toString(14))));
+        assertTrue(queue.contains(factory.instance(14)));
 
-        assertFalse(queue.contains(new SameHashItem(Integer.toString(144))));
+        assertFalse(queue.contains(factory.instance(144)));
 
-        Collection<SameHashItem> col1 = Arrays.asList(new 
SameHashItem(Integer.toString(14)),
-            new SameHashItem(Integer.toString(14)), new 
SameHashItem(Integer.toString(18)));
+        Collection<T> col1 = Arrays.asList(factory.instance(14), 
factory.instance(14), factory.instance(18));
 
         assertTrue(queue.containsAll(col1));
 
-        Collection<SameHashItem> col2 = Arrays.asList(new 
SameHashItem(Integer.toString(245)),
-            new SameHashItem(Integer.toString(14)), new 
SameHashItem(Integer.toString(18)));
+        Collection<T> col2 = Arrays.asList(factory.instance(245), 
factory.instance(14), factory.instance(18));
 
         assertFalse(queue.containsAll(col2));
 
         // Try to remove item.
-        assertTrue(queue.remove(new SameHashItem(Integer.toString(14))));
+        assertTrue(queue.remove(factory.instance(14)));
 
         assertEquals((retries * 2) - 1, queue.size());
 
-        assertTrue(queue.contains(new SameHashItem(Integer.toString(14))));
+        assertTrue(queue.contains(factory.instance(14)));
 
-        assertTrue(queue.remove(new SameHashItem(Integer.toString(14))));
+        assertTrue(queue.remove(factory.instance(14)));
 
         assertEquals((retries - 1) * 2, queue.size());
 
-        assertFalse(queue.remove(new SameHashItem(Integer.toString(14))));
+        assertFalse(queue.remove(factory.instance(14)));
 
         // Try to remove some items.
-        assertTrue(queue.contains(new SameHashItem(Integer.toString(33))));
+        assertTrue(queue.contains(factory.instance(33)));
 
-        assertTrue(queue.removeAll(Arrays.asList(new 
SameHashItem(Integer.toString(15)),
-            new SameHashItem(Integer.toString(14)), new 
SameHashItem(Integer.toString(33)),
-            new SameHashItem(Integer.toString(1)))));
+        assertTrue(queue.removeAll(Arrays.asList(factory.instance(15), 
factory.instance(14), factory.instance(33),
+            factory.instance(1))));
 
-        assertFalse(queue.contains(new SameHashItem(Integer.toString(33))));
+        assertFalse(queue.contains(factory.instance(33)));
 
         // Try to retain all items.
-        assertTrue(queue.retainAll(Arrays.asList(new 
SameHashItem(Integer.toString(15)),
-            new SameHashItem(Integer.toString(14)), new 
SameHashItem(Integer.toString(33)),
-            new SameHashItem(Integer.toString(1)))));
+        assertTrue(queue.retainAll(Arrays.asList(factory.instance(15), 
factory.instance(14), factory.instance(33),
+            factory.instance(1))));
 
-        assertFalse(queue.contains(new SameHashItem(Integer.toString(2))));
+        assertFalse(queue.contains(factory.instance(2)));
 
         assert queue.isEmpty();
     }
@@ -226,7 +246,7 @@ public abstract class GridCacheQueueApiSelfAbstractTest 
extends IgniteCollection
         // Random queue name.
         String queueName = UUID.randomUUID().toString();
 
-        IgniteQueue<String> queue = grid(0).queue(queueName, 0, config(false));
+        IgniteQueue<String> queue = initQueue(0, queueName, 0, config(false));
 
         assert queue.add("1");
 
@@ -249,7 +269,7 @@ public abstract class GridCacheQueueApiSelfAbstractTest 
extends IgniteCollection
         // Random queue name.
         String queueName = UUID.randomUUID().toString();
 
-        IgniteQueue<String> queue = grid(0).queue(queueName, 0, config(false));
+        IgniteQueue<String> queue = initQueue(0, queueName, 0, config(false));
 
         String item1 = "1";
         assert queue.add(item1);
@@ -288,7 +308,7 @@ public abstract class GridCacheQueueApiSelfAbstractTest 
extends IgniteCollection
         // Random queue name.
         String queueName = UUID.randomUUID().toString();
 
-        IgniteQueue<String> queue = grid(0).queue(queueName, 0, 
config(collocated));
+        IgniteQueue<String> queue = initQueue(0, queueName, 0, 
config(collocated));
 
         for (int i = 0; i < 100; i++)
             assert queue.add(Integer.toString(i));
@@ -345,7 +365,7 @@ public abstract class GridCacheQueueApiSelfAbstractTest 
extends IgniteCollection
         // Random queue name.
         String queueName = UUID.randomUUID().toString();
 
-        IgniteQueue<String> queue = grid(0).queue(queueName, QUEUE_CAPACITY, 
config(false));
+        IgniteQueue<String> queue = initQueue(0, queueName, QUEUE_CAPACITY, 
config(false));
 
         String thName = Thread.currentThread().getName();
 
@@ -368,7 +388,7 @@ public abstract class GridCacheQueueApiSelfAbstractTest 
extends IgniteCollection
         // Random queue name.
         String queueName = UUID.randomUUID().toString();
 
-        final IgniteQueue<String> queue = grid(0).queue(queueName, 
QUEUE_CAPACITY, config(false));
+        final IgniteQueue<String> queue = initQueue(0, queueName, 
QUEUE_CAPACITY, config(false));
 
         multithreaded(new Callable<Void>() {
                 @Override public Void call() throws Exception {
@@ -397,7 +417,7 @@ public abstract class GridCacheQueueApiSelfAbstractTest 
extends IgniteCollection
         // Random queue name.
         String queueName = UUID.randomUUID().toString();
 
-        final IgniteQueue<String> queue = grid(0).queue(queueName, 
QUEUE_CAPACITY, config(false));
+        final IgniteQueue<String> queue = initQueue(0, queueName, 
QUEUE_CAPACITY, config(false));
 
         multithreaded(new Callable<String>() {
                 @Override public String call() throws Exception {
@@ -425,7 +445,7 @@ public abstract class GridCacheQueueApiSelfAbstractTest 
extends IgniteCollection
         // Random queue name.
         final String queueName = UUID.randomUUID().toString();
 
-        final IgniteQueue<String> queue = grid(0).queue(queueName, 
QUEUE_CAPACITY, config(false));
+        final IgniteQueue<String> queue = initQueue(0, queueName, 
QUEUE_CAPACITY, config(false));
 
         final CountDownLatch putLatch = new CountDownLatch(THREAD_NUM);
 
@@ -461,7 +481,7 @@ public abstract class GridCacheQueueApiSelfAbstractTest 
extends IgniteCollection
         IgniteInternalFuture<?> closeFut = 
GridTestUtils.runMultiThreadedAsync(new Callable<Void>() {
             @Override public Void call() throws Exception {
                 try {
-                    IgniteQueue<String> queue = grid(0).queue(queueName, 0, 
null);
+                    IgniteQueue<String> queue = initQueue(0, queueName, 0, 
null);
 
                     if (queue != null)
                         queue.close();
@@ -506,7 +526,7 @@ public abstract class GridCacheQueueApiSelfAbstractTest 
extends IgniteCollection
         // Random queue name.
         String queueName = UUID.randomUUID().toString();
 
-        IgniteQueue<String> queue = grid(0).queue(queueName, 0, config(false));
+        IgniteQueue<String> queue = initQueue(0, queueName, 0, config(false));
 
         String thread = Thread.currentThread().getName();
 
@@ -532,7 +552,7 @@ public abstract class GridCacheQueueApiSelfAbstractTest 
extends IgniteCollection
         // Random queue name.
         String queueName = UUID.randomUUID().toString();
 
-        final IgniteQueue<String> queue = grid(0).queue(queueName, 0, 
config(false));
+        final IgniteQueue<String> queue = initQueue(0, queueName, 0, 
config(false));
 
         multithreaded(
             new Callable<String>() {
@@ -567,7 +587,7 @@ public abstract class GridCacheQueueApiSelfAbstractTest 
extends IgniteCollection
         // Random queue name.
         String queueName = UUID.randomUUID().toString();
 
-        IgniteQueue<String> queue = grid(0).queue(queueName, 0, config(false));
+        IgniteQueue<String> queue = initQueue(0, queueName, 0, config(false));
 
         for (int i = 0; i < QUEUE_CAPACITY; i++)
             queue.put("Item-" + i);
@@ -599,7 +619,7 @@ public abstract class GridCacheQueueApiSelfAbstractTest 
extends IgniteCollection
         // Random queue name.
         String queueName = UUID.randomUUID().toString();
 
-        IgniteQueue<String> queue = grid(0).queue(queueName, 0, config(false));
+        IgniteQueue<String> queue = initQueue(0, queueName, 0, config(false));
 
         for (int i = 0; i < 5; i++)
             queue.put("Item-" + i);
@@ -632,9 +652,9 @@ public abstract class GridCacheQueueApiSelfAbstractTest 
extends IgniteCollection
     public void testReuseCache() throws Exception {
         CollectionConfiguration colCfg = collectionConfiguration();
 
-        IgniteQueue queue1 = grid(0).queue("Queue1", 0, colCfg);
+        IgniteQueue queue1 = initQueue(0, "Queue1", 0, colCfg);
 
-        IgniteQueue queue2 = grid(0).queue("Queue2", 0, colCfg);
+        IgniteQueue queue2 = initQueue(0, "Queue2", 0, colCfg);
 
         assertEquals(getQueueCache(queue1), getQueueCache(queue2));
     }
@@ -653,9 +673,9 @@ public abstract class GridCacheQueueApiSelfAbstractTest 
extends IgniteCollection
         else
             colCfg2.setAtomicityMode(ATOMIC);
 
-        IgniteQueue queue1 = grid(0).queue("Queue1", 0, colCfg1);
+        IgniteQueue queue1 = initQueue(0, "Queue1", 0, colCfg1);
 
-        IgniteQueue queue2 = grid(0).queue("Queue2", 0, colCfg2);
+        IgniteQueue queue2 = initQueue(0, "Queue2", 0, colCfg2);
 
         assertNotSame(getQueueCache(queue1), getQueueCache(queue2));
     }
@@ -675,10 +695,10 @@ public abstract class GridCacheQueueApiSelfAbstractTest 
extends IgniteCollection
             }
         });
 
-        grid(0).queue("Queue1", 0, colCfg1);
+        initQueue(0, "Queue1", 0, colCfg1);
 
         try {
-            grid(0).queue("Queue2", 0, colCfg2);
+            initQueue(0, "Queue2", 0, colCfg2);
 
             fail("Exception was expected.");
         }
@@ -694,7 +714,7 @@ public abstract class GridCacheQueueApiSelfAbstractTest 
extends IgniteCollection
     public void testSystemCache() throws Exception {
         CollectionConfiguration colCfg = collectionConfiguration();
 
-        IgniteQueue queue = grid(0).queue("Queue1", 0, colCfg);
+        IgniteQueue queue = initQueue(0, "Queue1", 0, colCfg);
 
         final CacheConfiguration ccfg = getQueueCache(queue);
 
@@ -719,7 +739,7 @@ public abstract class GridCacheQueueApiSelfAbstractTest 
extends IgniteCollection
         colCfg.setGroupName("testGroup");
         colCfg.setCacheMode(CacheMode.PARTITIONED);
 
-        try (final IgniteQueue<Integer> queue1 = grid(0).queue("Queue1", 0, 
colCfg)) {
+        try (final IgniteQueue<Integer> queue1 = initQueue(0, "Queue1", 0, 
colCfg)) {
             GridTestUtils.assertThrows(
                 log,
                 new Callable<Void>() {
@@ -740,7 +760,7 @@ public abstract class GridCacheQueueApiSelfAbstractTest 
extends IgniteCollection
 
         colCfg.setCollocated(true);
 
-        try (final IgniteQueue<Integer> queue2 = grid(0).queue("Queue2", 0, 
colCfg)) {
+        try (final IgniteQueue<Integer> queue2 = initQueue(0, "Queue2", 0, 
colCfg)) {
             queue2.add(100);
 
             queue2.affinityRun(new IgniteRunnable() {
@@ -768,7 +788,7 @@ public abstract class GridCacheQueueApiSelfAbstractTest 
extends IgniteCollection
         colCfg.setGroupName("testGroup");
         colCfg.setCacheMode(CacheMode.PARTITIONED);
 
-        try (final IgniteQueue<Integer> queue1 = grid(0).queue("Queue1", 0, 
colCfg)) {
+        try (final IgniteQueue<Integer> queue1 = initQueue(0, "Queue1", 0, 
colCfg)) {
             GridTestUtils.assertThrows(
                 log,
                 new Callable<Void>() {
@@ -789,7 +809,7 @@ public abstract class GridCacheQueueApiSelfAbstractTest 
extends IgniteCollection
 
         colCfg.setCollocated(true);
 
-        try (final IgniteQueue<Integer> queue2 = grid(0).queue("Queue2", 0, 
colCfg)) {
+        try (final IgniteQueue<Integer> queue2 = initQueue(0, "Queue2", 0, 
colCfg)) {
             queue2.add(100);
 
             Integer res = queue2.affinityCall(new IgniteCallable<Integer>() {
@@ -829,7 +849,7 @@ public abstract class GridCacheQueueApiSelfAbstractTest 
extends IgniteCollection
         try {
             String queueName = UUID.randomUUID().toString();
 
-            IgniteQueue<String> queue = grid(0).queue(queueName, 0, 
config(false));
+            IgniteQueue<String> queue = initQueue(0, queueName, 0, 
config(false));
 
             try (Transaction tx = ignite.transactions().txStart()) {
                 cache.put(1, 1);
@@ -870,22 +890,20 @@ public abstract class GridCacheQueueApiSelfAbstractTest 
extends IgniteCollection
      */
     @Test
     public void testCacheReuse() throws Exception {
-        Ignite ignite = grid(0);
-
         CollectionConfiguration colCfg = collectionConfiguration();
 
         colCfg.setAtomicityMode(ATOMIC);
         colCfg.setGroupName("grp1");
 
-        IgniteQueue queue1 = ignite.queue("queue1", 100, colCfg);
-        IgniteQueue queue2 = ignite.queue("queue2", 100, colCfg);
+        IgniteQueue queue1 = initQueue(0, "queue1", 100, colCfg);
+        IgniteQueue queue2 = initQueue(0, "queue2", 100, colCfg);
 
         assert cctx(queue1).cacheId() == cctx(queue2).cacheId();
 
         colCfg.setAtomicityMode(TRANSACTIONAL);
 
-        IgniteQueue queue3 = ignite.queue("queue3", 100, colCfg);
-        IgniteQueue queue4 = ignite.queue("queue4", 100, colCfg);
+        IgniteQueue queue3 = initQueue(0, "queue3", 100, colCfg);
+        IgniteQueue queue4 = initQueue(0, "queue4", 100, colCfg);
 
         assert cctx(queue3).cacheId() == cctx(queue4).cacheId();
         assert cctx(queue1).cacheId() != cctx(queue3).cacheId();
@@ -893,8 +911,8 @@ public abstract class GridCacheQueueApiSelfAbstractTest 
extends IgniteCollection
 
         colCfg.setGroupName("gtp2");
 
-        IgniteQueue queue5 = ignite.queue("queue5", 100, colCfg);
-        IgniteQueue queue6 = ignite.queue("queue6", 100, colCfg);
+        IgniteQueue queue5 = initQueue(0, "queue5", 100, colCfg);
+        IgniteQueue queue6 = initQueue(0, "queue6", 100, colCfg);
 
         assert cctx(queue5).cacheId() == cctx(queue6).cacheId();
         assert cctx(queue1).groupId() != cctx(queue5).groupId();
@@ -907,15 +925,13 @@ public abstract class GridCacheQueueApiSelfAbstractTest 
extends IgniteCollection
      */
     @Test
     public void testMultipleStructuresInDifferentGroups() throws Exception {
-        Ignite ignite = grid(0);
-
         CollectionConfiguration cfg1 = collectionConfiguration();
         CollectionConfiguration cfg2 = 
collectionConfiguration().setGroupName("grp2");
 
-        IgniteQueue<String> queue1 = ignite.queue("queue1", 100, cfg1);
-        IgniteQueue<String> queue2 = ignite.queue("queue2", 100, cfg1);
-        IgniteQueue<String> queue3 = ignite.queue("queue3", 100, cfg2);
-        IgniteQueue<String> queue4 = ignite.queue("queue4", 100, cfg2);
+        IgniteQueue<String> queue1 = initQueue(0, "queue1", 100, cfg1);
+        IgniteQueue<String> queue2 = initQueue(0, "queue2", 100, cfg1);
+        IgniteQueue<String> queue3 = initQueue(0, "queue3", 100, cfg2);
+        IgniteQueue<String> queue4 = initQueue(0, "queue4", 100, cfg2);
 
         assertTrue(queue1.offer("a"));
         assertTrue(queue2.offer("b"));
@@ -961,8 +977,8 @@ public abstract class GridCacheQueueApiSelfAbstractTest 
extends IgniteCollection
         assertFalse(queue1.removed());
         assertFalse(queue3.removed());
 
-        assertNotNull(ignite.queue("queue1", 100, null));
-        assertNull(ignite.queue("queue2", 100, null));
+        assertNotNull(initQueue(0, "queue1", 100, null));
+        assertNull(initQueue(0, "queue2", 100, null));
 
         queue1.close();
         queue3.close();
@@ -971,14 +987,14 @@ public abstract class GridCacheQueueApiSelfAbstractTest 
extends IgniteCollection
     /**
      *  Test class with the same hash code.
      */
-    private static class SameHashItem implements Serializable {
-        /** Data field*/
+    protected static class SameHashItem implements Serializable {
+        /** Data field */
         private final String s;
 
         /**
          * @param s Item data.
          */
-        private SameHashItem(String s) {
+        protected SameHashItem(String s) {
             this.s = s;
         }
 
@@ -1007,4 +1023,37 @@ public abstract class GridCacheQueueApiSelfAbstractTest 
extends IgniteCollection
         }
     }
 
+    /**
+     * Class to generate {@link SameHashItem} or {@link BinaryObject} objects 
based on wheter the queue mode is
+     * binary.
+     */
+    private static class SameHashInstanceFactory<T> {
+        /** Ignite instance. */
+        private Ignite ignite;
+
+        /**
+         * @param ignite Ignite instance.
+         */
+        SameHashInstanceFactory(Ignite ignite) {
+            this.ignite = ignite;
+        }
+
+        /**
+         * @param val value to be used for creating the instance.
+         */
+        public T instance(int val) {
+            return BINARY_QUEUE_MODE
+                ? (T)ignite.binary().toBinary(new 
SameHashItem(Integer.toString(val)))
+                : (T)new SameHashItem(Integer.toString(val));
+        }
+
+        /**
+         * @param size Size of array.
+         */
+        public T[] array(int size) {
+            return BINARY_QUEUE_MODE
+                ? (T[])new BinaryObject[size]
+                : (T[])new SameHashItem[size];
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/cf7003cd/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheDataStructuresBinarySelfTestSuite.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheDataStructuresBinarySelfTestSuite.java
 
b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheDataStructuresBinarySelfTestSuite.java
new file mode 100644
index 0000000..38e236d
--- /dev/null
+++ 
b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheDataStructuresBinarySelfTestSuite.java
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.testsuites;
+
+import junit.framework.TestSuite;
+import 
org.apache.ignite.internal.processors.cache.datastructures.GridCacheQueueApiSelfAbstractTest;
+import 
org.apache.ignite.internal.processors.cache.datastructures.local.GridCacheLocalAtomicQueueApiSelfTest;
+import 
org.apache.ignite.internal.processors.cache.datastructures.local.GridCacheLocalQueueApiSelfTest;
+import 
org.apache.ignite.internal.processors.cache.datastructures.partitioned.GridCachePartitionedAtomicQueueApiSelfTest;
+import 
org.apache.ignite.internal.processors.cache.datastructures.partitioned.GridCachePartitionedQueueApiSelfTest;
+import 
org.apache.ignite.internal.processors.cache.datastructures.partitioned.IgnitePartitionedQueueNoBackupsTest;
+import 
org.apache.ignite.internal.processors.cache.datastructures.replicated.GridCacheReplicatedQueueApiSelfTest;
+
+/**
+ * Test suite for binary cache data structures.
+ */
+public class IgniteCacheDataStructuresBinarySelfTestSuite extends TestSuite {
+    /**
+     * @return Cache test suite.
+     * @throws Exception If failed.
+     */
+    public static TestSuite suite() throws Exception {
+        TestSuite suite = new TestSuite("Ignite Cache Data Structures Binary 
Test Suite");
+
+        System.setProperty(GridCacheQueueApiSelfAbstractTest.BINARY_QUEUE, 
"true");
+
+        suite.addTest(new TestSuite(GridCacheLocalQueueApiSelfTest.class));
+        suite.addTest(new 
TestSuite(GridCacheLocalAtomicQueueApiSelfTest.class));
+        suite.addTest(new 
TestSuite(GridCacheReplicatedQueueApiSelfTest.class));
+        suite.addTest(new 
TestSuite(GridCachePartitionedQueueApiSelfTest.class));
+        suite.addTest(new 
TestSuite(GridCachePartitionedAtomicQueueApiSelfTest.class));
+        suite.addTest(new 
TestSuite(IgnitePartitionedQueueNoBackupsTest.class));
+
+        return suite;
+    }
+}

http://git-wip-us.apache.org/repos/asf/ignite/blob/cf7003cd/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheDataStructuresSelfTestSuite.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheDataStructuresSelfTestSuite.java
 
b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheDataStructuresSelfTestSuite.java
index 457ec8a..1ec9ca8 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheDataStructuresSelfTestSuite.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheDataStructuresSelfTestSuite.java
@@ -94,7 +94,7 @@ public class IgniteCacheDataStructuresSelfTestSuite extends 
TestSuite {
     /**
      * @return Cache test suite.
      */
-    public static TestSuite suite() {
+    public static TestSuite suite() throws Exception {
         TestSuite suite = new TestSuite("Ignite Cache Data Structures Test 
Suite");
 
         // Data structures.
@@ -190,6 +190,8 @@ public class IgniteCacheDataStructuresSelfTestSuite extends 
TestSuite {
 
         suite.addTest(new 
JUnit4TestAdapter(AtomicCacheAffinityConfigurationTest.class));
 
+        suite.addTest(IgniteCacheDataStructuresBinarySelfTestSuite.suite());
+
         return suite;
     }
 }

Reply via email to