IGNITE-2881: Fixed SPI queries.

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

Branch: refs/heads/ignite-ssl-hotfix
Commit: 59b46d3e6ea073d054ca2262d676b055a74bbb1f
Parents: 5e7ef86
Author: vozerov-gridgain <voze...@gridgain.com>
Authored: Mon Oct 3 10:40:04 2016 +0300
Committer: vozerov-gridgain <voze...@gridgain.com>
Committed: Mon Oct 3 10:40:04 2016 +0300

----------------------------------------------------------------------
 .../org/apache/ignite/cache/query/SpiQuery.java |   8 +-
 .../processors/cache/IgniteCacheProxy.java      |  34 ++-
 .../cache/query/GridCacheQueryManager.java      |   2 +-
 .../cache/query/IndexingSpiQuerySelfTest.java   | 218 +++++++++++++++++++
 .../cache/query/IndexingSpiQueryTxSelfTest.java | 162 ++++++++++++++
 .../IgniteBinaryCacheQueryTestSuite.java        |   1 -
 .../IgniteCacheQuerySelfTestSuite.java          |   5 +
 7 files changed, 416 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/59b46d3e/modules/core/src/main/java/org/apache/ignite/cache/query/SpiQuery.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/cache/query/SpiQuery.java 
b/modules/core/src/main/java/org/apache/ignite/cache/query/SpiQuery.java
index 0c11437..c3aa472 100644
--- a/modules/core/src/main/java/org/apache/ignite/cache/query/SpiQuery.java
+++ b/modules/core/src/main/java/org/apache/ignite/cache/query/SpiQuery.java
@@ -58,13 +58,13 @@ public final class SpiQuery<K, V> extends 
Query<Cache.Entry<K, V>> {
     }
 
     /** {@inheritDoc} */
-    @Override public SqlQuery<K, V> setPageSize(int pageSize) {
-        return (SqlQuery<K, V>)super.setPageSize(pageSize);
+    @Override public SpiQuery<K, V> setPageSize(int pageSize) {
+        return (SpiQuery<K, V>)super.setPageSize(pageSize);
     }
 
     /** {@inheritDoc} */
-    @Override public SqlQuery<K, V> setLocal(boolean loc) {
-        return (SqlQuery<K, V>)super.setLocal(loc);
+    @Override public SpiQuery<K, V> setLocal(boolean loc) {
+        return (SpiQuery<K, V>)super.setLocal(loc);
     }
 
     /** {@inheritDoc} */

http://git-wip-us.apache.org/repos/asf/ignite/blob/59b46d3e/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 81d4b49..58c7c9c 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
@@ -533,11 +533,11 @@ public class IgniteCacheProxy<K, V> extends 
AsyncSupportAdapter<IgniteCache<K, V
     @SuppressWarnings("unchecked")
     private QueryCursor<Cache.Entry<K, V>> query(final Query filter, @Nullable 
ClusterGroup grp)
         throws IgniteCheckedException {
-        final CacheQuery<Map.Entry<K, V>> qry;
+        final CacheQuery qry;
 
         boolean isKeepBinary = opCtx != null && opCtx.isKeepBinary();
 
-        final CacheQueryFuture<Map.Entry<K, V>> fut;
+        final CacheQueryFuture fut;
 
         if (filter instanceof TextQuery) {
             TextQuery p = (TextQuery)filter;
@@ -561,8 +561,8 @@ public class IgniteCacheProxy<K, V> extends 
AsyncSupportAdapter<IgniteCache<K, V
                 qry.projection(grp);
 
             fut = ctx.kernalContext().query().executeQuery(ctx,
-                new IgniteOutClosureX<CacheQueryFuture<Map.Entry<K, V>>>() {
-                    @Override public CacheQueryFuture<Map.Entry<K, V>> 
applyx() throws IgniteCheckedException {
+                new IgniteOutClosureX<CacheQueryFuture<Cache.Entry<K, V>>>() {
+                    @Override public CacheQueryFuture<Cache.Entry<K, V>> 
applyx() throws IgniteCheckedException {
                         return qry.execute(((SpiQuery)filter).getArgs());
                     }
                 }, false);
@@ -577,21 +577,39 @@ public class IgniteCacheProxy<K, V> extends 
AsyncSupportAdapter<IgniteCache<K, V
 
         return new QueryCursorImpl<>(new GridCloseableIteratorAdapter<Entry<K, 
V>>() {
             /** */
-            private Map.Entry<K, V> cur;
+            private Cache.Entry<K, V> cur;
 
             @Override protected Entry<K, V> onNext() throws 
IgniteCheckedException {
                 if (!onHasNext())
                     throw new NoSuchElementException();
 
-                Map.Entry<K, V> e = cur;
+                Cache.Entry<K, V> e = cur;
 
                 cur = null;
 
-                return new CacheEntryImpl<>(e.getKey(), e.getValue());
+                return e;
             }
 
             @Override protected boolean onHasNext() throws 
IgniteCheckedException {
-                return cur != null || (cur = fut.next()) != null;
+                if (cur != null)
+                    return true;
+
+                Object next = fut.next();
+
+                // Workaround a bug: if IndexingSpi is configured future 
represents Iterator<Cache.Entry>
+                // instead of Iterator<Map.Entry> due to IndexingSpi interface.
+                if (next == null)
+                    return false;
+
+                if (next instanceof Cache.Entry)
+                    cur = (Cache.Entry)next;
+                else {
+                    Map.Entry e = (Map.Entry)next;
+
+                    cur = new CacheEntryImpl(e.getKey(), e.getValue());
+                }
+
+                return true;
             }
 
             @Override protected void onClose() throws IgniteCheckedException {

http://git-wip-us.apache.org/repos/asf/ignite/blob/59b46d3e/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java
index 9699f09..7bd1a51 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java
@@ -690,7 +690,7 @@ public abstract class GridCacheQueryManager<K, V> extends 
GridCacheManagerAdapte
 
         T2<String, List<Object>> resKey = null;
 
-        if (qry.clause() == null) {
+        if (qry.clause() == null && qry.type() != SPI) {
             assert !loc;
 
             throw new IgniteCheckedException("Received next page request after 
iterator was removed. " +

http://git-wip-us.apache.org/repos/asf/ignite/blob/59b46d3e/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/IndexingSpiQuerySelfTest.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/IndexingSpiQuerySelfTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/IndexingSpiQuerySelfTest.java
new file mode 100644
index 0000000..94b0c8a
--- /dev/null
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/IndexingSpiQuerySelfTest.java
@@ -0,0 +1,218 @@
+/*
+ * 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.internal.processors.cache.query;
+
+import junit.framework.TestCase;
+import org.apache.ignite.Ignite;
+import org.apache.ignite.IgniteCache;
+import org.apache.ignite.IgniteTransactions;
+import org.apache.ignite.Ignition;
+import org.apache.ignite.cache.CacheAtomicityMode;
+import org.apache.ignite.cache.query.QueryCursor;
+import org.apache.ignite.cache.query.SpiQuery;
+import org.apache.ignite.configuration.CacheConfiguration;
+import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.internal.processors.cache.CacheEntryImpl;
+import 
org.apache.ignite.internal.transactions.IgniteTxHeuristicCheckedException;
+import org.apache.ignite.spi.IgniteSpiAdapter;
+import org.apache.ignite.spi.IgniteSpiException;
+import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
+import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
+import org.apache.ignite.spi.indexing.IndexingQueryFilter;
+import org.apache.ignite.spi.indexing.IndexingSpi;
+import org.apache.ignite.testframework.GridTestUtils;
+import org.apache.ignite.transactions.Transaction;
+import org.apache.ignite.transactions.TransactionConcurrency;
+import org.apache.ignite.transactions.TransactionIsolation;
+import org.apache.ignite.transactions.TransactionState;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.SortedMap;
+import java.util.TreeMap;
+import java.util.concurrent.Callable;
+import javax.cache.Cache;
+
+/**
+ * Indexing Spi query test
+ */
+public class IndexingSpiQuerySelfTest extends TestCase {
+    /** {@inheritDoc} */
+    @Override public void tearDown() throws Exception {
+        Ignition.stopAll(true);
+    }
+
+    /**
+     * @throws Exception If failed.
+     */
+    public void testSimpleIndexingSpi() throws Exception {
+        IgniteConfiguration cfg = configuration();
+
+        cfg.setIndexingSpi(new MyIndexingSpi());
+
+        Ignite ignite = Ignition.start(cfg);
+
+        CacheConfiguration<Integer, Integer> ccfg = new 
CacheConfiguration<>("test-cache");
+
+        ccfg.setIndexedTypes(Integer.class, Integer.class);
+
+        IgniteCache<Integer, Integer> cache = ignite.createCache(ccfg);
+
+        for (int i = 0; i < 10; i++)
+            cache.put(i, i);
+
+        QueryCursor<Cache.Entry<Integer, Integer>> cursor = cache.query(new 
SpiQuery<Integer, Integer>().setArgs(2, 5));
+
+        for (Cache.Entry<Integer, Integer> entry : cursor)
+            System.out.println(entry);
+    }
+
+    /**
+     * @throws Exception If failed.
+     */
+    @SuppressWarnings("ThrowableResultOfMethodCallIgnored")
+    public void testIndexingSpiFailure() throws Exception {
+        IgniteConfiguration cfg = configuration();
+
+        cfg.setIndexingSpi(new MyBrokenIndexingSpi());
+
+        Ignite ignite = Ignition.start(cfg);
+
+        CacheConfiguration<Integer, Integer> ccfg = new 
CacheConfiguration<>("test-cache");
+
+        ccfg.setAtomicityMode(CacheAtomicityMode.TRANSACTIONAL);
+        ccfg.setIndexedTypes(Integer.class, Integer.class);
+
+        final IgniteCache<Integer, Integer> cache = ignite.createCache(ccfg);
+
+        final IgniteTransactions txs = ignite.transactions();
+
+        for (final TransactionConcurrency concurrency : 
TransactionConcurrency.values()) {
+            for (final TransactionIsolation isolation : 
TransactionIsolation.values()) {
+                System.out.println("Run in transaction: " + concurrency + " " 
+ isolation);
+
+                GridTestUtils.assertThrowsWithCause(new Callable<Void>() {
+                    @Override public Void call() throws Exception {
+                        Transaction tx;
+
+                        try (Transaction tx0 = tx = txs.txStart(concurrency, 
isolation)) {
+                            cache.put(1, 1);
+
+                            tx0.commit();
+                        }
+
+                        assertEquals(TransactionState.ROLLED_BACK, tx.state());
+                        return null;
+                    }
+                }, IgniteTxHeuristicCheckedException.class);
+            }
+        }
+    }
+
+    /**
+     * @return Configuration.
+     */
+    private IgniteConfiguration configuration() {
+        IgniteConfiguration cfg = new IgniteConfiguration();
+
+        TcpDiscoveryVmIpFinder ipFinder = new TcpDiscoveryVmIpFinder(true);
+        TcpDiscoverySpi disco = new TcpDiscoverySpi();
+
+        disco.setMaxMissedHeartbeats(Integer.MAX_VALUE);
+
+        disco.setIpFinder(ipFinder);
+
+        cfg.setDiscoverySpi(disco);
+
+        return cfg;
+    }
+
+    /**
+     * Indexing Spi implementation for test
+     */
+    private static class MyIndexingSpi extends IgniteSpiAdapter implements 
IndexingSpi {
+        /** Index. */
+        private final SortedMap<Object, Object> idx = new TreeMap<>();
+
+        /** {@inheritDoc} */
+        @Override public void spiStart(@Nullable String gridName) throws 
IgniteSpiException {
+            // No-op.
+        }
+
+        /** {@inheritDoc} */
+        @Override public void spiStop() throws IgniteSpiException {
+            // No-op.
+        }
+
+        /** {@inheritDoc} */
+        @Override public Iterator<Cache.Entry<?, ?>> query(@Nullable String 
spaceName, Collection<Object> params,
+            @Nullable IndexingQueryFilter filters) throws IgniteSpiException {
+            if (params.size() < 2)
+                throw new IgniteSpiException("Range parameters required.");
+
+            Iterator<Object> paramsIt = params.iterator();
+
+            Object from = paramsIt.next();
+            Object to = paramsIt.next();
+
+            SortedMap<Object, Object> map = idx.subMap(from, to);
+
+            Collection<Cache.Entry<?, ?>> res = new ArrayList<>(map.size());
+
+            for (Map.Entry<Object, Object> entry : map.entrySet())
+                res.add(new CacheEntryImpl<>(entry.getKey(), 
entry.getValue()));
+
+            return res.iterator();
+        }
+
+        /** {@inheritDoc} */
+        @Override public void store(@Nullable String spaceName, Object key, 
Object val, long expirationTime)
+            throws IgniteSpiException {
+            idx.put(key, val);
+        }
+
+        /** {@inheritDoc} */
+        @Override public void remove(@Nullable String spaceName, Object key) 
throws IgniteSpiException {
+            // No-op.
+        }
+
+        /** {@inheritDoc} */
+        @Override public void onSwap(@Nullable String spaceName, Object key) 
throws IgniteSpiException {
+            // No-op.
+        }
+
+        /** {@inheritDoc} */
+        @Override public void onUnswap(@Nullable String spaceName, Object key, 
Object val) throws IgniteSpiException {
+            // No-op.
+        }
+    }
+
+    /**
+     * Broken Indexing Spi implementation for test
+     */
+    private class MyBrokenIndexingSpi extends MyIndexingSpi {
+        /** {@inheritDoc} */
+        @Override public void store(@Nullable String spaceName, Object key, 
Object val,
+            long expirationTime) throws IgniteSpiException {
+            throw new IgniteSpiException("Test exception");
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/59b46d3e/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/IndexingSpiQueryTxSelfTest.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/IndexingSpiQueryTxSelfTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/IndexingSpiQueryTxSelfTest.java
new file mode 100644
index 0000000..78ed1fd
--- /dev/null
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/IndexingSpiQueryTxSelfTest.java
@@ -0,0 +1,162 @@
+/*
+ * 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.internal.processors.cache.query;
+
+import org.apache.ignite.IgniteCache;
+import org.apache.ignite.IgniteTransactions;
+import org.apache.ignite.cache.CacheAtomicityMode;
+import org.apache.ignite.configuration.CacheConfiguration;
+import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.internal.IgniteEx;
+import org.apache.ignite.internal.processors.cache.GridCacheAbstractSelfTest;
+import 
org.apache.ignite.internal.transactions.IgniteTxHeuristicCheckedException;
+import org.apache.ignite.spi.IgniteSpiAdapter;
+import org.apache.ignite.spi.IgniteSpiException;
+import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
+import org.apache.ignite.spi.indexing.IndexingQueryFilter;
+import org.apache.ignite.spi.indexing.IndexingSpi;
+import org.apache.ignite.testframework.GridTestUtils;
+import org.apache.ignite.transactions.Transaction;
+import org.apache.ignite.transactions.TransactionConcurrency;
+import org.apache.ignite.transactions.TransactionIsolation;
+import org.apache.ignite.transactions.TransactionState;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.concurrent.Callable;
+import java.util.concurrent.atomic.AtomicInteger;
+import javax.cache.Cache;
+
+/**
+ * Indexing Spi transactional query test
+ */
+public class IndexingSpiQueryTxSelfTest extends GridCacheAbstractSelfTest {
+    /** */
+    private static AtomicInteger cnt;
+
+    /** {@inheritDoc} */
+    @Override protected int gridCount() {
+        return 4;
+    }
+
+    /** {@inheritDoc} */
+    @Override protected void beforeTestsStarted() throws Exception {
+        cnt = new AtomicInteger();
+
+        super.beforeTestsStarted();
+    }
+
+    /** {@inheritDoc} */
+    @SuppressWarnings("unchecked")
+    @Override protected IgniteConfiguration getConfiguration(String gridName) 
throws Exception {
+        IgniteConfiguration cfg = super.getConfiguration(gridName);
+        ((TcpDiscoverySpi)cfg.getDiscoverySpi()).setForceServerMode(true);
+
+        if (cnt.getAndIncrement() == 0)
+            cfg.setClientMode(true);
+        else {
+            cfg.setIndexingSpi(new MyBrokenIndexingSpi());
+
+            CacheConfiguration ccfg = cacheConfiguration(gridName);
+            ccfg.setName("test-cache");
+            ccfg.setAtomicityMode(CacheAtomicityMode.TRANSACTIONAL);
+
+            ccfg.setIndexedTypes(Integer.class, Integer.class);
+
+            cfg.setCacheConfiguration(ccfg);
+        }
+        return cfg;
+    }
+
+    /**
+     * @throws Exception If failed.
+     */
+    @SuppressWarnings("ThrowableResultOfMethodCallIgnored")
+    public void testIndexingSpiWithTx() throws Exception {
+        IgniteEx ignite = grid(0);
+
+        final IgniteCache<Integer, Integer> cache = ignite.cache("test-cache");
+
+        final IgniteTransactions txs = ignite.transactions();
+
+        for (final TransactionConcurrency concurrency : 
TransactionConcurrency.values()) {
+            for (final TransactionIsolation isolation : 
TransactionIsolation.values()) {
+                System.out.println("Run in transaction: " + concurrency + " " 
+ isolation);
+
+                GridTestUtils.assertThrowsWithCause(new Callable<Void>() {
+                    @Override public Void call() throws Exception {
+                        Transaction tx;
+
+                        try (Transaction tx0 = tx = txs.txStart(concurrency, 
isolation)) {
+                            cache.put(1, 1);
+
+                            tx0.commit();
+                        }
+
+                        assertEquals(TransactionState.ROLLED_BACK, tx.state());
+
+                        return null;
+                    }
+                }, IgniteTxHeuristicCheckedException.class);
+            }
+        }
+    }
+
+    /**
+     * Indexing SPI implementation for test
+     */
+    private static class MyBrokenIndexingSpi extends IgniteSpiAdapter 
implements IndexingSpi {
+        /** {@inheritDoc} */
+        @Override public void spiStart(@Nullable String gridName) throws 
IgniteSpiException {
+            // No-op.
+        }
+
+        /** {@inheritDoc} */
+        @Override public void spiStop() throws IgniteSpiException {
+            // No-op.
+        }
+
+        /** {@inheritDoc} */
+        @Override public Iterator<Cache.Entry<?, ?>> query(@Nullable String 
spaceName, Collection<Object> params,
+            @Nullable IndexingQueryFilter filters) throws IgniteSpiException {
+           return null;
+        }
+
+        /** {@inheritDoc} */
+        @Override public void store(@Nullable String spaceName, Object key, 
Object val, long expirationTime)
+            throws IgniteSpiException {
+            throw new IgniteSpiException("Test exception");
+        }
+
+        /** {@inheritDoc} */
+        @Override public void remove(@Nullable String spaceName, Object key) 
throws IgniteSpiException {
+            // No-op.
+        }
+
+        /** {@inheritDoc} */
+        @Override public void onSwap(@Nullable String spaceName, Object key) 
throws IgniteSpiException {
+            // No-op.
+        }
+
+        /** {@inheritDoc} */
+        @Override public void onUnswap(@Nullable String spaceName, Object key, 
Object val) throws IgniteSpiException {
+            // No-op.
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/ignite/blob/59b46d3e/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteBinaryCacheQueryTestSuite.java
----------------------------------------------------------------------
diff --git 
a/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteBinaryCacheQueryTestSuite.java
 
b/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteBinaryCacheQueryTestSuite.java
index 761d4bd..3cb603c 100644
--- 
a/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteBinaryCacheQueryTestSuite.java
+++ 
b/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteBinaryCacheQueryTestSuite.java
@@ -24,7 +24,6 @@ import 
org.apache.ignite.internal.processors.cache.BinarySerializationQueryWithR
 import 
org.apache.ignite.internal.processors.cache.IgniteCacheBinaryObjectsScanSelfTest;
 import 
org.apache.ignite.internal.processors.cache.binary.distributed.dht.GridCacheBinaryDuplicateIndexObjectPartitionedAtomicSelfTest;
 import 
org.apache.ignite.internal.processors.cache.binary.distributed.dht.GridCacheBinaryDuplicateIndexObjectPartitionedTransactionalSelfTest;
-import 
org.apache.ignite.internal.processors.cache.query.continuous.CacheContinuousQueryLostPartitionTest;
 import org.apache.ignite.testframework.config.GridTestProperties;
 
 /**

http://git-wip-us.apache.org/repos/asf/ignite/blob/59b46d3e/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteCacheQuerySelfTestSuite.java
----------------------------------------------------------------------
diff --git 
a/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteCacheQuerySelfTestSuite.java
 
b/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteCacheQuerySelfTestSuite.java
index e7f55a1..2174147 100644
--- 
a/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteCacheQuerySelfTestSuite.java
+++ 
b/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteCacheQuerySelfTestSuite.java
@@ -60,6 +60,8 @@ import 
org.apache.ignite.internal.processors.cache.distributed.replicated.Ignite
 import 
org.apache.ignite.internal.processors.cache.local.IgniteCacheLocalAtomicQuerySelfTest;
 import 
org.apache.ignite.internal.processors.cache.local.IgniteCacheLocalQuerySelfTest;
 import 
org.apache.ignite.internal.processors.cache.query.GridCacheQueryTransformerSelfTest;
+import 
org.apache.ignite.internal.processors.cache.query.IndexingSpiQuerySelfTest;
+import 
org.apache.ignite.internal.processors.cache.query.IndexingSpiQueryTxSelfTest;
 import org.apache.ignite.internal.processors.query.IgniteSqlSchemaIndexingTest;
 import org.apache.ignite.internal.processors.query.IgniteSqlSplitterSelfTest;
 import org.apache.ignite.internal.processors.query.h2.sql.GridQueryParsingTest;
@@ -127,6 +129,9 @@ public class IgniteCacheQuerySelfTestSuite extends 
TestSuite {
         
suite.addTestSuite(IgniteBinaryObjectQueryArgumentsOffheapLocalTest.class);
         suite.addTestSuite(IgniteBinaryObjectLocalQueryArgumentsTest.class);
 
+        suite.addTestSuite(IndexingSpiQuerySelfTest.class);
+        suite.addTestSuite(IndexingSpiQueryTxSelfTest.class);
+
         return suite;
     }
 }

Reply via email to