ignite-sprint-4 - query tests for IGNITE-713
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/1446aeb4 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/1446aeb4 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/1446aeb4 Branch: refs/heads/ignite-80 Commit: 1446aeb4a43218bb5896acef212715f7bbd150c3 Parents: b4b28fd Author: S.Vladykin <svlady...@gridgain.com> Authored: Fri Apr 24 17:29:02 2015 +0300 Committer: S.Vladykin <svlady...@gridgain.com> Committed: Fri Apr 24 17:29:02 2015 +0300 ---------------------------------------------------------------------- .../GridCacheAbstractFieldsQuerySelfTest.java | 1284 ------------------ .../IgniteCacheAbstractFieldsQuerySelfTest.java | 233 +++- ...artitionedFieldsQueryP2PEnabledSelfTest.java | 34 - ...GridCachePartitionedFieldsQuerySelfTest.java | 115 -- ...eReplicatedFieldsQueryP2PEnableSelfTest.java | 34 - .../GridCacheReplicatedFieldsQuerySelfTest.java | 157 --- 6 files changed, 217 insertions(+), 1640 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1446aeb4/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractFieldsQuerySelfTest.java ---------------------------------------------------------------------- diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractFieldsQuerySelfTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractFieldsQuerySelfTest.java deleted file mode 100644 index 062b429..0000000 --- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractFieldsQuerySelfTest.java +++ /dev/null @@ -1,1284 +0,0 @@ -/* - * 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; - -import org.apache.ignite.*; -import org.apache.ignite.cache.*; -import org.apache.ignite.cache.affinity.*; -import org.apache.ignite.cache.query.*; -import org.apache.ignite.cache.query.annotations.*; -import org.apache.ignite.configuration.*; -import org.apache.ignite.internal.*; -import org.apache.ignite.internal.processors.cache.query.*; -import org.apache.ignite.internal.processors.datastructures.*; -import org.apache.ignite.internal.processors.query.*; -import org.apache.ignite.internal.util.typedef.*; -import org.apache.ignite.lang.*; -import org.apache.ignite.marshaller.optimized.*; -import org.apache.ignite.spi.discovery.*; -import org.apache.ignite.spi.discovery.tcp.*; -import org.apache.ignite.spi.discovery.tcp.ipfinder.*; -import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.*; -import org.apache.ignite.testframework.junits.common.*; -import org.jetbrains.annotations.*; - -import java.io.*; -import java.util.*; - -import static org.apache.ignite.cache.CacheAtomicityMode.*; -import static org.apache.ignite.cache.CacheMode.*; -import static org.apache.ignite.cache.CacheRebalanceMode.*; - -/** - * Tests for fields queries. - */ -public abstract class GridCacheAbstractFieldsQuerySelfTest extends GridCommonAbstractTest { - /** IP finder. */ - private static final TcpDiscoveryIpFinder IP_FINDER = new TcpDiscoveryVmIpFinder(true); - - /** Cache name. */ - private static final String CACHE = "cache"; - - /** Empty cache name. */ - private static final String EMPTY_CACHE = "emptyCache"; - - /** Name of the cache that doesn't index primitives. */ - private static final String CACHE_NO_PRIMITIVES = "cacheNoPrimitives"; - - /** Name of the cache that doesn't index primitives. */ - private static final String CACHE_COMPLEX_KEYS = "cacheComplexKeys"; - - /** Flag indicating if starting node should have cache. */ - protected boolean hasCache; - - /** {@inheritDoc} */ - @Override protected IgniteConfiguration getConfiguration(String gridName) throws Exception { - IgniteConfiguration cfg = super.getConfiguration(gridName); - - cfg.setMarshaller(new OptimizedMarshaller(false)); - - if (hasCache) - cfg.setCacheConfiguration(cache(null, null), cache(CACHE, null), cache(EMPTY_CACHE, null)); - else { - cfg.setClientMode(true); - cfg.setCacheConfiguration(); - } - - cfg.setDiscoverySpi(discovery()); - - return cfg; - } - - /** - * @param name Cache name. - * @param spiName Indexing SPI name. - * @return Cache. - */ - protected CacheConfiguration cache(@Nullable String name, @Nullable String spiName) { - CacheConfiguration cache = defaultCacheConfiguration(); - - cache.setName(name); - cache.setCacheMode(cacheMode()); - cache.setAtomicityMode(atomicityMode()); - cache.setWriteSynchronizationMode(CacheWriteSynchronizationMode.FULL_SYNC); - cache.setRebalanceMode(SYNC); - cache.setIndexedTypes(String.class, Organization.class, - Integer.class, Integer.class); - - if (cacheMode() == PARTITIONED) - cache.setBackups(1); - - return cache; - } - - /** @return Discovery SPI. */ - private DiscoverySpi discovery() { - TcpDiscoverySpi spi = new TcpDiscoverySpi(); - - spi.setIpFinder(IP_FINDER); - - return spi; - } - - /** {@inheritDoc} */ - @Override protected void beforeTestsStarted() throws Exception { - hasCache = true; - - startGridsMultiThreaded(gridCount()); - - hasCache = false; - - startGrid(gridCount()); - - IgniteCache<String, Organization> orgCache = grid(0).cache(null); - - assert orgCache != null; - - orgCache.put("o1", new Organization(1, "A")); - orgCache.put("o2", new Organization(2, "B")); - - IgniteCache<AffinityKey<String>, Person> personCache = grid(0).cache(null); - - assert personCache != null; - - personCache.put(new AffinityKey<>("p1", "o1"), new Person("John White", 25, 1)); - personCache.put(new AffinityKey<>("p2", "o1"), new Person("Joe Black", 35, 1)); - personCache.put(new AffinityKey<>("p3", "o2"), new Person("Mike Green", 40, 2)); - - IgniteCache<String, String> strCache = grid(0).cache(null); - - assert strCache != null; - - strCache.put("key", "val"); - - IgniteCache<Integer, Integer> intCache = grid(0).cache(null); - - assert intCache != null; - - for (int i = 0; i < 200; i++) - intCache.put(i, i); - - IgniteCache<Integer, Integer> namedCache = grid(0).cache(null); - - for (int i = 0; i < 200; i++) - namedCache.put(i, i); - } - - /** {@inheritDoc} */ - @Override protected void afterTestsStopped() throws Exception { - stopAllGrids(); - } - - /** @return cache mode. */ - protected abstract CacheMode cacheMode(); - - /** @return Cache atomicity mode. */ - protected CacheAtomicityMode atomicityMode() { - return TRANSACTIONAL; - } - - /** @return Number of grids to start. */ - protected abstract int gridCount(); - - /** @throws Exception If failed. */ - public void testCacheMetaData() throws Exception { - // Put internal key to test filtering of internal objects. - ((IgniteKernal)grid(0)).getCache(null).getAndPut(new GridCacheInternalKeyImpl("LONG"), new GridCacheAtomicLongValue(0)); - - try { - Collection<GridCacheSqlMetadata> metas = - ((IgniteKernal)grid(0)).getCache(null).context().queries().sqlMetadata(); - - assert metas != null; - assertEquals("Invalid meta: " + metas, 3, metas.size()); - - boolean wasNull = false; - boolean wasNamed = false; - boolean wasEmpty = false; - - for (GridCacheSqlMetadata meta : metas) { - if (meta.cacheName() == null) { - Collection<String> types = meta.types(); - - assert types != null; - assert types.size() == 4; - assert types.contains("Person"); - assert types.contains("Organization"); - assert types.contains("String"); - assert types.contains("Integer"); - - assert AffinityKey.class.getName().equals(meta.keyClass("Person")); - assert String.class.getName().equals(meta.keyClass("Organization")); - assert String.class.getName().equals(meta.keyClass("String")); - - assert Person.class.getName().equals(meta.valueClass("Person")); - assert Organization.class.getName().equals(meta.valueClass("Organization")); - assert String.class.getName().equals(meta.valueClass("String")); - - Map<String, String> fields = meta.fields("Person"); - - assert fields != null; - assert fields.size() == 5; - assert AffinityKey.class.getName().equals(fields.get("_KEY")); - assert Person.class.getName().equals(fields.get("_VAL")); - assert String.class.getName().equals(fields.get("NAME")); - assert int.class.getName().equals(fields.get("AGE")); - assert int.class.getName().equals(fields.get("ORGID")); - - fields = meta.fields("Organization"); - - assert fields != null; - assert fields.size() == 4; - assert String.class.getName().equals(fields.get("_KEY")); - assert Organization.class.getName().equals(fields.get("_VAL")); - assert int.class.getName().equals(fields.get("ID")); - assert String.class.getName().equals(fields.get("NAME")); - - fields = meta.fields("String"); - - assert fields != null; - assert fields.size() == 2; - assert String.class.getName().equals(fields.get("_KEY")); - assert String.class.getName().equals(fields.get("_VAL")); - - fields = meta.fields("Integer"); - - assert fields != null; - assert fields.size() == 2; - assert Integer.class.getName().equals(fields.get("_KEY")); - assert Integer.class.getName().equals(fields.get("_VAL")); - - Collection<GridCacheSqlIndexMetadata> indexes = meta.indexes("Person"); - - assertEquals(2, indexes.size()); - - wasNull = true; - } - else if (CACHE.equals(meta.cacheName())) - wasNamed = true; - else if (EMPTY_CACHE.equals(meta.cacheName())) { - assert meta.types().isEmpty(); - - wasEmpty = true; - } - } - - assert wasNull; - assert wasNamed; - assert wasEmpty; - } - finally { - ((IgniteKernal)grid(0)).getCache(null).remove(new GridCacheInternalKeyImpl("LONG")); - } - } - - /** @throws Exception If failed. */ - public void testExecute() throws Exception { - CacheQuery<List<?>> qry = ((IgniteKernal)grid(0)).getCache(null).context().queries().createSqlFieldsQuery( - "select _KEY, name, age from Person", false); - - CacheQueryFuture<List<?>> fut = qry.execute(); - - assert metadata(fut) == null; - - List<List<?>> res = new ArrayList<>(fut.get()); - - assert res != null; - - dedup(res); - - assertEquals(res.size(), 3); - - Collections.sort(res, new Comparator<List<?>>() { - @Override public int compare(List<?> row1, List<?> row2) { - return ((Integer)row1.get(2)).compareTo((Integer)row2.get(2)); - } - }); - - int cnt = 0; - - for (List<?> row : res) { - assert row.size() == 3; - - if (cnt == 0) { - assert new AffinityKey<>("p1", "o1").equals(row.get(0)); - assert "John White".equals(row.get(1)); - assert row.get(2).equals(25); - } - else if (cnt == 1) { - assert new AffinityKey<>("p2", "o1").equals(row.get(0)); - assert "Joe Black".equals(row.get(1)); - assert row.get(2).equals(35); - } - if (cnt == 2) { - assert new AffinityKey<>("p3", "o2").equals(row.get(0)); - assert "Mike Green".equals(row.get(1)); - assert row.get(2).equals(40); - } - - cnt++; - } - - assert cnt == 3; - } - - /** @throws Exception If failed. */ - public void testExecuteWithArguments() throws Exception { - CacheQuery<List<?>> qry = ((IgniteKernal)grid(0)).getCache(null).context().queries().createSqlFieldsQuery( - "select _KEY, name, age from Person where age > ?", false); - - CacheQueryFuture<List<?>> fut = qry.execute(30); - - assert metadata(fut) == null; - - List<List<?>> res = new ArrayList<>(fut.get()); - - assert res != null; - - dedup(res); - - assert res.size() == 2; - - Collections.sort(res, new Comparator<List<?>>() { - @Override public int compare(List<?> row1, List<?> row2) { - return ((Integer)row1.get(2)).compareTo((Integer)row2.get(2)); - } - }); - - int cnt = 0; - - for (List<?> row : res) { - assert row.size() == 3; - - if (cnt == 0) { - assert new AffinityKey<>("p2", "o1").equals(row.get(0)); - assert "Joe Black".equals(row.get(1)); - assert row.get(2).equals(35); - } - else if (cnt == 1) { - assert new AffinityKey<>("p3", "o2").equals(row.get(0)); - assert "Mike Green".equals(row.get(1)); - assert row.get(2).equals(40); - } - - cnt++; - } - - assert cnt == 2; - } - - /** @throws Exception If failed. */ - public void testExecuteWithMetaData() throws Exception { - CacheQuery<List<?>> qry = ((IgniteKernal)grid(0)).getCache(null).context().queries().createSqlFieldsQuery( - "select p._KEY, p.name, p.age, o.name " + - "from Person p, Organization o where p.orgId = o.id", - true, false); - - CacheQueryFuture<List<?>> fut = qry.execute(); - - List<GridQueryFieldMetadata> meta = metadata(fut); - - assert meta != null; - assert meta.size() == 4; - - Iterator<GridQueryFieldMetadata> metaIt = meta.iterator(); - - assert metaIt != null; - assert metaIt.hasNext(); - - GridQueryFieldMetadata field = metaIt.next(); - - assert field != null; - assert "PUBLIC".equals(field.schemaName()); - assert "PERSON".equals(field.typeName()); - assert "_KEY".equals(field.fieldName()); - assert Object.class.getName().equals(field.fieldTypeName()); - - assert metaIt.hasNext(); - - field = metaIt.next(); - - assert field != null; - assert "PUBLIC".equals(field.schemaName()); - assert "PERSON".equals(field.typeName()); - assert "NAME".equals(field.fieldName()); - assert String.class.getName().equals(field.fieldTypeName()); - - assert metaIt.hasNext(); - - field = metaIt.next(); - - assert field != null; - assert "PUBLIC".equals(field.schemaName()); - assert "PERSON".equals(field.typeName()); - assert "AGE".equals(field.fieldName()); - assert Integer.class.getName().equals(field.fieldTypeName()); - - assert metaIt.hasNext(); - - field = metaIt.next(); - - assert field != null; - assert "PUBLIC".equals(field.schemaName()); - assert "ORGANIZATION".equals(field.typeName()); - assert "NAME".equals(field.fieldName()); - assert String.class.getName().equals(field.fieldTypeName()); - - assert !metaIt.hasNext(); - - List<List<?>> res = new ArrayList<>(fut.get()); - - dedup(res); - - assertEquals(3, res.size()); - - Collections.sort(res, new Comparator<List<?>>() { - @Override public int compare(List<?> row1, List<?> row2) { - return ((Integer)row1.get(2)).compareTo((Integer)row2.get(2)); - } - }); - - int cnt = 0; - - for (List<?> row : res) { - assert row.size() == 4; - - if (cnt == 0) { - assert new AffinityKey<>("p1", "o1").equals(row.get(0)); - assert "John White".equals(row.get(1)); - assert row.get(2).equals(25); - assert "A".equals(row.get(3)); - } - else if (cnt == 1) { - assert new AffinityKey<>("p2", "o1").equals(row.get(0)); - assert "Joe Black".equals(row.get(1)); - assert row.get(2).equals(35); - assert "A".equals(row.get(3)); - } - if (cnt == 2) { - assert new AffinityKey<>("p3", "o2").equals(row.get(0)); - assert "Mike Green".equals(row.get(1)); - assert row.get(2).equals(40); - assert "B".equals(row.get(3)); - } - - cnt++; - } - - assert cnt == 3; - } - - /** @throws Exception If failed. */ - public void testSelectAllJoined() throws Exception { - CacheQuery<List<?>> qry = ((IgniteKernal)grid(0)).getCache(null).context().queries().createSqlFieldsQuery( - "select * from Person p, Organization o where p.orgId = o.id", - true, false); - - CacheQueryFuture<List<?>> fut = qry.execute(); - - List<GridQueryFieldMetadata> meta = metadata(fut); - - assert meta != null; - assert meta.size() == 9; - - Iterator<GridQueryFieldMetadata> metaIt = meta.iterator(); - - assert metaIt != null; - assert metaIt.hasNext(); - - GridQueryFieldMetadata field = metaIt.next(); - - assert field != null; - assert "PUBLIC".equals(field.schemaName()); - assert "PERSON".equals(field.typeName()); - assert "_KEY".equals(field.fieldName()); - assert Object.class.getName().equals(field.fieldTypeName()); - - assert metaIt.hasNext(); - - field = metaIt.next(); - - assert field != null; - assert "PUBLIC".equals(field.schemaName()); - assert "PERSON".equals(field.typeName()); - assert "_VAL".equals(field.fieldName()); - assert Object.class.getName().equals(field.fieldTypeName()); - - assert metaIt.hasNext(); - - field = metaIt.next(); - - assert field != null; - assert "PUBLIC".equals(field.schemaName()); - assert "PERSON".equals(field.typeName()); - assert "NAME".equals(field.fieldName()); - assert String.class.getName().equals(field.fieldTypeName()); - - assert metaIt.hasNext(); - - field = metaIt.next(); - - assert field != null; - assert "PUBLIC".equals(field.schemaName()); - assert "PERSON".equals(field.typeName()); - assert "AGE".equals(field.fieldName()); - assert Integer.class.getName().equals(field.fieldTypeName()); - - assert metaIt.hasNext(); - - field = metaIt.next(); - - assert field != null; - assert "PUBLIC".equals(field.schemaName()); - assert "PERSON".equals(field.typeName()); - assert "ORGID".equals(field.fieldName()); - assert Integer.class.getName().equals(field.fieldTypeName()); - - assert metaIt.hasNext(); - - field = metaIt.next(); - - assert field != null; - assert "PUBLIC".equals(field.schemaName()); - assert "ORGANIZATION".equals(field.typeName()); - assert "_KEY".equals(field.fieldName()); - assert String.class.getName().equals(field.fieldTypeName()) : field.fieldTypeName(); - - assert metaIt.hasNext(); - - field = metaIt.next(); - - assert field != null; - assert "PUBLIC".equals(field.schemaName()); - assert "ORGANIZATION".equals(field.typeName()); - assert "_VAL".equals(field.fieldName()); - assert Object.class.getName().equals(field.fieldTypeName()); - - assert metaIt.hasNext(); - - field = metaIt.next(); - - assert field != null; - assert "PUBLIC".equals(field.schemaName()); - assert "ORGANIZATION".equals(field.typeName()); - assert "ID".equals(field.fieldName()); - assert Integer.class.getName().equals(field.fieldTypeName()); - - assert metaIt.hasNext(); - - field = metaIt.next(); - - assert field != null; - assert "PUBLIC".equals(field.schemaName()); - assert "ORGANIZATION".equals(field.typeName()); - assert "NAME".equals(field.fieldName()); - assert String.class.getName().equals(field.fieldTypeName()); - - assert !metaIt.hasNext(); - - List<List<?>> res = new ArrayList<>(fut.get()); - - dedup(res); - - assertEquals(3, res.size()); - - Collections.sort(res, new Comparator<List<?>>() { - @Override public int compare(List<?> row1, List<?> row2) { - return ((Integer)row1.get(3)).compareTo((Integer)row2.get(3)); - } - }); - - int cnt = 0; - - for (List<?> row : res) { - assert row.size() == 9; - - if (cnt == 0) { - assert new AffinityKey<>("p1", "o1").equals(row.get(0)); - assert Person.class.getName().equals(row.get(1).getClass().getName()); - assert "John White".equals(row.get(2)); - assert row.get(3).equals(25); - assert row.get(4).equals(1); - assert "o1".equals(row.get(5)); - assert Organization.class.getName().equals(row.get(6).getClass().getName()); - assert row.get(7).equals(1); - assert "A".equals(row.get(8)); - } - else if (cnt == 1) { - assert new AffinityKey<>("p2", "o1").equals(row.get(0)); - assert Person.class.getName().equals(row.get(1).getClass().getName()); - assert "Joe Black".equals(row.get(2)); - assert row.get(3).equals(35); - assert row.get(4).equals(1); - assert "o1".equals(row.get(5)); - assert Organization.class.getName().equals(row.get(6).getClass().getName()); - assert row.get(7).equals(1); - assert "A".equals(row.get(8)); - } - if (cnt == 2) { - assert new AffinityKey<>("p3", "o2").equals(row.get(0)); - assert Person.class.getName().equals(row.get(1).getClass().getName()); - assert "Mike Green".equals(row.get(2)); - assert row.get(3).equals(40); - assert row.get(4).equals(2); - assert "o2".equals(row.get(5)); - assert Organization.class.getName().equals(row.get(6).getClass().getName()); - assert row.get(7).equals(2); - assert "B".equals(row.get(8)); - } - - cnt++; - } - - assert cnt == 3; - } - - /** @throws Exception If failed. */ - public void testEmptyResult() throws Exception { - CacheQuery<List<?>> qry = ((IgniteKernal)grid(0)).getCache(null).context().queries().createSqlFieldsQuery( - "select name from Person where age = 0", true, false); - - CacheQueryFuture<List<?>> fut = qry.execute(); - - assert fut != null; - - List<GridQueryFieldMetadata> meta = metadata(fut); - - assert meta != null; - assert meta.size() == 1; - - GridQueryFieldMetadata field = F.first(meta); - - assert field != null; - assert "PUBLIC".equals(field.schemaName()); - assert "PERSON".equals(field.typeName()); - assert "NAME".equals(field.fieldName()); - assert String.class.getName().equals(field.fieldTypeName()); - - Collection<List<?>> res = fut.get(); - - assert res != null; - assert res.isEmpty(); - } - - /** @throws Exception If failed. */ - public void testQueryString() throws Exception { - CacheQuery<List<?>> qry = ((IgniteKernal)grid(0)).getCache(null).context().queries(). - createSqlFieldsQuery("select * from String", false); - - Collection<List<?>> res = qry.execute().get(); - - assert res != null; - assert res.size() == 1; - - for (List<?> row : res) { - assert row != null; - assert row.size() == 2; - assert "key".equals(row.get(0)); - assert "val".equals(row.get(1)); - } - } - - /** @throws Exception If failed. */ - public void testQueryIntegersWithJoin() throws Exception { - CacheQuery<List<?>> qry = ((IgniteKernal)grid(0)).getCache(null).context().queries().createSqlFieldsQuery( - "select i._KEY, i._VAL, j._KEY, j._VAL from Integer i join Integer j where i._VAL >= 100", true, false) - .projection(grid(0).cluster()); - - CacheQueryFuture<List<?>> fut = qry.execute(); - - List<GridQueryFieldMetadata> meta = metadata(fut); - - assert meta != null; - assert meta.size() == 4; - - Iterator<GridQueryFieldMetadata> metaIt = meta.iterator(); - - assert metaIt.hasNext(); - - GridQueryFieldMetadata field = metaIt.next(); - - assert field != null; - assert "INTEGER".equals(field.typeName()); - assert "_KEY".equals(field.fieldName()); - - assert metaIt.hasNext(); - - field = metaIt.next(); - - assert field != null; - assert "INTEGER".equals(field.typeName()); - assert "_VAL".equals(field.fieldName()); - - assert metaIt.hasNext(); - - field = metaIt.next(); - - assert field != null; - assert "INTEGER".equals(field.typeName()); - assert "_KEY".equals(field.fieldName()); - - assert metaIt.hasNext(); - - field = metaIt.next(); - - assert field != null; - assert "INTEGER".equals(field.typeName()); - assert "_VAL".equals(field.fieldName()); - - assert !metaIt.hasNext(); - - Collection<List<?>> res = fut.get(); - - assert res != null; - - if (cacheMode() == LOCAL) - assert res.size() == 20000; - else if (cacheMode() == REPLICATED) - assert res.size() == 60000; - else - assert res.size() <= 20000; - - for (List<?> row : res) { - assert (Integer)row.get(0) >= 100; - assert (Integer)row.get(1) >= 100; - assert (Integer)row.get(2) >= 0; - assert (Integer)row.get(3) >= 0; - } - } - - /** @throws Exception If failed. */ - public void testPagination() throws Exception { - CacheQuery<List<?>> qry = ((IgniteKernal)grid(0)).getCache(null).context().queries(). - createSqlFieldsQuery("select * from Integer", false); - - qry.pageSize(20); - - List<List<?>> res = new ArrayList<>(qry.execute().get()); - - dedup(res); - - Collections.sort(res, new Comparator<List<?>>() { - @Override public int compare(List<?> r1, List<?> r2) { - return ((Integer)r1.get(0)).compareTo((Integer)r2.get(0)); - } - }); - - assertEquals(200, res.size()); - - for (List<?> row : res) - assertEquals("Wrong row size: " + row, 2, row.size()); - } - - /** @throws Exception If failed. */ - public void testNamedCache() throws Exception { - IgniteCache<Integer, Integer> cache = grid(0).cache(CACHE); - - for (int i = 0; i < 200; i++) - cache.getAndPut(i, i); - - Collection<List<?>> res = - cache.query(new SqlFieldsQuery("select * from Integer").setLocal(true)).getAll(); - - assert res != null; - assert res.size() == (cacheMode() == REPLICATED ? 200 * gridCount() : 200); - } - - // TODO: IGNITE-588. - /** @throws Exception If failed. */ - public void testNoPrimitives() throws Exception { - fail("https://issues.apache.org/jira/browse/IGNITE-588"); - - GridCacheAdapter<Object, Object> cache = ((IgniteKernal)grid(0)).internalCache(CACHE_NO_PRIMITIVES); - - cache.getAndPut("key", "val"); - - Collection<GridCacheSqlMetadata> metas = cache.context().queries().sqlMetadata(); - - assertEquals(1, metas.size()); - - assert F.first(metas).types().isEmpty() : "Non empty types: " + F.first(metas).types(); - - CacheQuery<List<?>> qry = cache.context().queries().createSqlFieldsQuery("select * from String", false); - - assert qry.execute().get().isEmpty(); - - cache.removeAll(); - } - - // TODO: IGNITE-588. - /** @throws Exception If failed. */ - public void testComplexKeys() throws Exception { - fail("https://issues.apache.org/jira/browse/IGNITE-588"); - - GridCacheAdapter<PersonKey, Person> cache = ((IgniteKernal)grid(0)).internalCache(CACHE_COMPLEX_KEYS); - - UUID id = UUID.randomUUID(); - - PersonKey key = new PersonKey(id); - Person val = new Person("John", 20, 1); - - cache.getAndPut(key, val); - - Collection<GridCacheSqlMetadata> metas = cache.context().queries().sqlMetadata(); - - assertEquals(1, metas.size()); - - GridCacheSqlMetadata meta = F.first(metas); - - assertEquals(CACHE_COMPLEX_KEYS, meta.cacheName()); - - Collection<String> types = meta.types(); - - assertEquals(1, types.size()); - assert types.contains("Person"); - - assertEquals(PersonKey.class.getName(), meta.keyClass("Person")); - assertEquals(Person.class.getName(), meta.valueClass("Person")); - - Map<String, String> fields = meta.fields("Person"); - - assertEquals(6, fields.size()); - - int cnt = 0; - - for (Map.Entry<String, String> e : fields.entrySet()) { - if (cnt == 0) { - assertEquals("_KEY", e.getKey()); - assertEquals(PersonKey.class.getName(), e.getValue()); - } - else if (cnt == 1) { - assertEquals("_VAL", e.getKey()); - assertEquals(Person.class.getName(), e.getValue()); - } - else if (cnt == 2) { - assertEquals("ID", e.getKey()); - assertEquals(UUID.class.getName(), e.getValue()); - } - else if (cnt == 3) { - assertEquals("NAME", e.getKey()); - assertEquals(String.class.getName(), e.getValue()); - } - else if (cnt == 4) { - assertEquals("AGE", e.getKey()); - assertEquals(int.class.getName(), e.getValue()); - } - else if (cnt == 5) { - assertEquals("ORGID", e.getKey()); - assertEquals(int.class.getName(), e.getValue()); - } - - cnt++; - } - - Collection<List<?>> res = cache.context().queries(). - createSqlFieldsQuery("select * from Person", false).execute().get(); - - assertEquals(1, res.size()); - - for (Collection<?> row : res) { - cnt = 0; - - for (Object fieldVal : row) { - if (cnt == 0) - assertEquals(key, fieldVal); - else if (cnt == 1) - assertEquals(val, fieldVal); - else if (cnt == 2) - assertEquals(id, fieldVal); - else if (cnt == 3) - assertEquals("John", fieldVal); - else if (cnt == 4) - assertEquals(20, fieldVal); - else if (cnt == 5) - assertEquals(1, fieldVal); - - cnt++; - } - } - - cache.removeAll(); - } - - /** @throws Exception If failed. */ - public void testPaginationIteratorDefaultCache() throws Exception { - testPaginationIterator(null); - } - - /** @throws Exception If failed. */ - public void testPaginationIteratorNamedCache() throws Exception { - testPaginationIterator(CACHE); - } - - /** - * @param cacheName Cache name. - * @throws Exception If failed. - */ - private void testPaginationIterator(@Nullable String cacheName) throws Exception { - CacheQuery<List<?>> q = ((IgniteKernal)grid(0)).getCache(cacheName).context().queries(). - createSqlFieldsQuery("select _key, _val from " + "Integer", false) - .projection(grid(0).cluster()); - - q.pageSize(10); - q.keepAll(false); - - CacheQueryFuture<List<?>> f = q.execute(); - - int cnt = 0; - - List<?> row; - - while ((row = f.next()) != null) { - assertEquals(2, row.size()); - assertEquals(row.get(0), row.get(1)); - assertTrue((Integer)row.get(0) >= 0 && (Integer)row.get(0) < 200); - - cnt++; - } - - int size = cacheMode() == REPLICATED ? 200 * gridCount() : 200; - - assertEquals(size, cnt); - - assertTrue(f.isDone()); - - if (cacheMode() != LOCAL) - assertTrue(f.get().size() < size); - } - - /** @throws Exception If failed. */ - public void testPaginationIteratorKeepAll() throws Exception { - CacheQuery<List<?>> q = ((IgniteKernal)grid(0)).getCache(null).context().queries(). - createSqlFieldsQuery("select _key, _val from Integer", false); - - q.pageSize(10); - q.keepAll(true); - - CacheQueryFuture<List<?>> f = q.execute(); - - int cnt = 0; - - List<?> row; - - while ((row = f.next()) != null) { - assertEquals(2, row.size()); - assertEquals(row.get(0), row.get(1)); - assertTrue((Integer)row.get(0) >= 0 && (Integer)row.get(0) < 200); - - cnt++; - } - - int size = 200; - - assertEquals(size, cnt); - - assertTrue(f.isDone()); - - List<List<?>> list = new ArrayList<>(f.get()); - - dedup(list); - - Collections.sort(list, new Comparator<List<?>>() { - @Override public int compare(List<?> r1, List<?> r2) { - return ((Integer)r1.get(0)).compareTo((Integer)r2.get(0)); - } - }); - - for (int i = 0; i < 200; i++) { - List<?> r = list.get(i); - - assertEquals(i, r.get(0)); - assertEquals(i, r.get(1)); - } - } - - /** @throws Exception If failed. */ - public void testPaginationGetDefaultCache() throws Exception { - testPaginationGet(null); - } - - /** @throws Exception If failed. */ - public void testPaginationGetNamedCache() throws Exception { - testPaginationGet(CACHE); - } - - /** - * @param cacheName Cache name. - * @throws Exception If failed. - */ - private void testPaginationGet(@Nullable String cacheName) throws Exception { - CacheQuery<List<?>> q = ((IgniteKernal)grid(0)).getCache(cacheName).context().queries(). - createSqlFieldsQuery("select _key, _val from " + "Integer", false); - - q.pageSize(10); - q.keepAll(true); - - CacheQueryFuture<List<?>> f = q.execute(); - - List<List<?>> list = new ArrayList<>(f.get()); - - dedup(list); - - Collections.sort(list, new Comparator<List<?>>() { - @Override public int compare(List<?> r1, List<?> r2) { - return ((Integer)r1.get(0)).compareTo((Integer)r2.get(0)); - } - }); - - for (int i = 0; i < 200; i++) { - List<?> row = list.get(i); - - assertEquals(i, row.get(0)); - assertEquals(i, row.get(1)); - } - } - - /** @throws Exception If failed. */ - public void testEmptyGrid() throws Exception { - Collection<List<?>> qry = grid(0).cache(null).query(new SqlFieldsQuery("select name, " + - "age from Person where age = 25")).getAll(); - - List<?> res = F.first(qry); - - assert res != null; - assert res.size() == 2; - assert "John White".equals(res.get(0)); - assert res.get(1).equals(25); - } - - /** - * Dedups result. - * - * @param res Result. - * @throws Exception In case of error. - */ - private void dedup(Collection<List<?>> res) throws Exception { - assert res != null; - - if (cacheMode() != REPLICATED) - return; - - Collection<List<?>> res0 = new ArrayList<>(res.size()); - - Collection<Object> keys = new HashSet<>(); - - for (List<?> row : res) { - Object key = row.get(0); - - if (!keys.contains(key)) { - res0.add(row); - keys.add(key); - } - } - - res.clear(); - - res.addAll(res0); - } - - /** - * @param fut Query future. - * @return Metadata. - * @throws IgniteCheckedException In case of error. - */ - private List<GridQueryFieldMetadata> metadata(CacheQueryFuture<List<?>> fut) throws IgniteCheckedException { - assert fut != null; - - return ((GridCacheQueryMetadataAware)fut).metadata().get(); - } - - /** - */ - private static class RemoteSumReducerFactory implements C1<Object[], IgniteReducer<List<Object>, Integer>> { - /** {@inheritDoc} */ - @Override public IgniteReducer<List<Object>, Integer> apply(Object[] args) { - return new RemoteSumReducer(); - } - } - - /** - */ - private static class RemoteSumReducer implements R1<List<Object>, Integer> { - /** */ - private int sum; - - /** {@inheritDoc} */ - @Override public boolean collect(@Nullable List<Object> row) { - if (row != null) - sum += (int)row.get(0); - - return true; - } - - /** {@inheritDoc} */ - @Override public Integer reduce() { - return sum; - } - } - - /** - */ - private static class LocalSumReducerFactory implements C1<Object[], IgniteReducer<Integer, Integer>> { - /** {@inheritDoc} */ - @Override public IgniteReducer<Integer, Integer> apply(Object[] args) { - return new LocalSumReducer(); - } - } - - /** - */ - private static class LocalSumReducer implements R1<Integer, Integer> { - /** */ - private int sum; - - /** {@inheritDoc} */ - @Override public boolean collect(@Nullable Integer val) { - if (val != null) - sum += val; - - return true; - } - - /** {@inheritDoc} */ - @Override public Integer reduce() { - return sum; - } - } - - /** - * Person key. - */ - @SuppressWarnings("UnusedDeclaration") - private static class PersonKey implements Serializable { - /** ID. */ - @QuerySqlField - private final UUID id; - - /** @param id ID. */ - private PersonKey(UUID id) { - assert id != null; - - this.id = id; - } - - /** {@inheritDoc} */ - @Override public boolean equals(Object o) { - if (this == o) - return true; - - if (o == null || getClass() != o.getClass()) - return false; - - PersonKey key = (PersonKey)o; - - return id.equals(key.id); - - } - - /** {@inheritDoc} */ - @Override public int hashCode() { - return id.hashCode(); - } - } - - /** - * Person. - */ - @SuppressWarnings("UnusedDeclaration") - private static class Person implements Serializable { - /** Name. */ - @QuerySqlField(index = false) - private final String name; - - /** Age. */ - @QuerySqlField(index = true) - private final int age; - - /** Organization ID. */ - @QuerySqlField(index = true) - private final int orgId; - - /** - * @param name Name. - * @param age Age. - * @param orgId Organization ID. - */ - private Person(String name, int age, int orgId) { - assert !F.isEmpty(name); - assert age > 0; - assert orgId > 0; - - this.name = name; - this.age = age; - this.orgId = orgId; - } - - /** {@inheritDoc} */ - @Override public boolean equals(Object o) { - if (this == o) - return true; - - if (o == null || getClass() != o.getClass()) - return false; - - Person person = (Person)o; - - return age == person.age && orgId == person.orgId && name.equals(person.name); - - } - - /** {@inheritDoc} */ - @Override public int hashCode() { - int res = name.hashCode(); - - res = 31 * res + age; - res = 31 * res + orgId; - - return res; - } - } - - /** - * Organization. - */ - @SuppressWarnings("UnusedDeclaration") - private static class Organization implements Serializable { - /** ID. */ - @QuerySqlField - private final int id; - - /** Name. */ - @QuerySqlField(index = false) - private final String name; - - /** - * @param id ID. - * @param name Name. - */ - private Organization(int id, String name) { - assert id > 0; - assert !F.isEmpty(name); - - this.id = id; - this.name = name; - } - - /** {@inheritDoc} */ - @Override public boolean equals(Object o) { - if (this == o) - return true; - - if (o == null || getClass() != o.getClass()) - return false; - - Organization that = (Organization)o; - - return id == that.id && name.equals(that.name); - - } - - /** {@inheritDoc} */ - @Override public int hashCode() { - int res = id; - - res = 31 * res + name.hashCode(); - - return res; - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1446aeb4/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheAbstractFieldsQuerySelfTest.java ---------------------------------------------------------------------- diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheAbstractFieldsQuerySelfTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheAbstractFieldsQuerySelfTest.java index 7f4ddfb..451e12c 100644 --- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheAbstractFieldsQuerySelfTest.java +++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheAbstractFieldsQuerySelfTest.java @@ -23,6 +23,10 @@ import org.apache.ignite.cache.affinity.*; import org.apache.ignite.cache.query.*; import org.apache.ignite.cache.query.annotations.*; import org.apache.ignite.configuration.*; +import org.apache.ignite.internal.*; +import org.apache.ignite.internal.processors.cache.query.*; +import org.apache.ignite.internal.processors.datastructures.*; +import org.apache.ignite.internal.processors.query.*; import org.apache.ignite.internal.util.typedef.*; import org.apache.ignite.marshaller.optimized.*; import org.apache.ignite.spi.discovery.*; @@ -94,26 +98,32 @@ public abstract class IgniteCacheAbstractFieldsQuerySelfTest extends GridCommonA cache.setWriteSynchronizationMode(CacheWriteSynchronizationMode.FULL_SYNC); cache.setRebalanceMode(CacheRebalanceMode.SYNC); - List<Class<?>> indexedTypes = new ArrayList<>(F.<Class<?>>asList( - String.class, Organization.class - )); + List<Class<?>> indexedTypes; - if (CACHE_COMPLEX_KEYS.equals(name)) { - indexedTypes.addAll(F.<Class<?>>asList( - PersonKey.class, Person.class - )); - } + if (EMPTY_CACHE.equals(name)) + indexedTypes = new ArrayList<>(); else { - indexedTypes.addAll(F.<Class<?>>asList( - AffinityKey.class, Person.class + indexedTypes = new ArrayList<>(F.<Class<?>>asList( + String.class, Organization.class )); - } - if (!CACHE_NO_PRIMITIVES.equals(name)) { - indexedTypes.addAll(F.<Class<?>>asList( - String.class, String.class, - Integer.class, Integer.class - )); + if (CACHE_COMPLEX_KEYS.equals(name)) { + indexedTypes.addAll(F.<Class<?>>asList( + PersonKey.class, Person.class + )); + } + else { + indexedTypes.addAll(F.<Class<?>>asList( + AffinityKey.class, Person.class + )); + } + + if (!CACHE_NO_PRIMITIVES.equals(name)) { + indexedTypes.addAll(F.<Class<?>>asList( + String.class, String.class, + Integer.class, Integer.class + )); + } } cache.setIndexedTypes(indexedTypes.toArray(new Class[indexedTypes.size()])); @@ -194,6 +204,197 @@ public abstract class IgniteCacheAbstractFieldsQuerySelfTest extends GridCommonA protected abstract int gridCount(); /** @throws Exception If failed. */ + public void testCacheMetaData() throws Exception { + // Put internal key to test filtering of internal objects. + ((IgniteKernal)grid(0)).getCache(null).getAndPut(new GridCacheInternalKeyImpl("LONG"), new GridCacheAtomicLongValue(0)); + + try { + Collection<GridCacheSqlMetadata> metas = + ((IgniteKernal)grid(0)).getCache(null).context().queries().sqlMetadata(); + + assert metas != null; + + assertEquals("Invalid meta: " + metas, 5, metas.size()); + + boolean wasNull = false; + boolean wasNamed = false; + boolean wasEmpty = false; + + for (GridCacheSqlMetadata meta : metas) { + if (meta.cacheName() == null) { + Collection<String> types = meta.types(); + + assert types != null; + assert types.size() == 4; + assert types.contains("Person"); + assert types.contains("Organization"); + assert types.contains("String"); + assert types.contains("Integer"); + + assert AffinityKey.class.getName().equals(meta.keyClass("Person")); + assert String.class.getName().equals(meta.keyClass("Organization")); + assert String.class.getName().equals(meta.keyClass("String")); + + assert Person.class.getName().equals(meta.valueClass("Person")); + assert Organization.class.getName().equals(meta.valueClass("Organization")); + assert String.class.getName().equals(meta.valueClass("String")); + + Map<String, String> fields = meta.fields("Person"); + + assert fields != null; + assert fields.size() == 5; + assert AffinityKey.class.getName().equals(fields.get("_KEY")); + assert Person.class.getName().equals(fields.get("_VAL")); + assert String.class.getName().equals(fields.get("NAME")); + assert int.class.getName().equals(fields.get("AGE")); + assert int.class.getName().equals(fields.get("ORGID")); + + fields = meta.fields("Organization"); + + assert fields != null; + assert fields.size() == 4; + assert String.class.getName().equals(fields.get("_KEY")); + assert Organization.class.getName().equals(fields.get("_VAL")); + assert int.class.getName().equals(fields.get("ID")); + assert String.class.getName().equals(fields.get("NAME")); + + fields = meta.fields("String"); + + assert fields != null; + assert fields.size() == 2; + assert String.class.getName().equals(fields.get("_KEY")); + assert String.class.getName().equals(fields.get("_VAL")); + + fields = meta.fields("Integer"); + + assert fields != null; + assert fields.size() == 2; + assert Integer.class.getName().equals(fields.get("_KEY")); + assert Integer.class.getName().equals(fields.get("_VAL")); + + Collection<GridCacheSqlIndexMetadata> indexes = meta.indexes("Person"); + + assertEquals(2, indexes.size()); + + wasNull = true; + } + else if (CACHE.equals(meta.cacheName())) + wasNamed = true; + else if (EMPTY_CACHE.equals(meta.cacheName())) { + assert meta.types().isEmpty(); + + wasEmpty = true; + } + } + + assert wasNull; + assert wasNamed; + assert wasEmpty; + } + finally { + ((IgniteKernal)grid(0)).getCache(null).remove(new GridCacheInternalKeyImpl("LONG")); + } + } + + /** @throws Exception If failed. */ + public void testExecuteWithMetaData() throws Exception { + QueryCursorImpl<List<?>> cursor = (QueryCursorImpl<List<?>>)grid(0).cache(null).query(new SqlFieldsQuery( + "select p._KEY, p.name, p.age, o.name " + + "from Person p, Organization o where p.orgId = o.id")); + + Collection<GridQueryFieldMetadata> meta = cursor.fieldsMeta(); + + assert meta != null; + assert meta.size() == 4; + + Iterator<GridQueryFieldMetadata> metaIt = meta.iterator(); + + assert metaIt != null; + assert metaIt.hasNext(); + + GridQueryFieldMetadata field = metaIt.next(); + + assert field != null; + assert "".equals(field.schemaName()); + assert "PERSON".equals(field.typeName()); + assert "_KEY".equals(field.fieldName()); + assert Object.class.getName().equals(field.fieldTypeName()); + + assert metaIt.hasNext(); + + field = metaIt.next(); + + assert field != null; + assert "".equals(field.schemaName()); + assert "PERSON".equals(field.typeName()); + assert "NAME".equals(field.fieldName()); + assert String.class.getName().equals(field.fieldTypeName()); + + assert metaIt.hasNext(); + + field = metaIt.next(); + + assert field != null; + assert "".equals(field.schemaName()); + assert "PERSON".equals(field.typeName()); + assert "AGE".equals(field.fieldName()); + assert Integer.class.getName().equals(field.fieldTypeName()); + + assert metaIt.hasNext(); + + field = metaIt.next(); + + assert field != null; + assert "".equals(field.schemaName()); + assert "ORGANIZATION".equals(field.typeName()); + assert "NAME".equals(field.fieldName()); + assert String.class.getName().equals(field.fieldTypeName()); + + assert !metaIt.hasNext(); + + List<List<?>> res = cursor.getAll(); + + dedup(res); + + assertEquals(3, res.size()); + + Collections.sort(res, new Comparator<List<?>>() { + @Override public int compare(List<?> row1, List<?> row2) { + return ((Integer)row1.get(2)).compareTo((Integer)row2.get(2)); + } + }); + + int cnt = 0; + + for (List<?> row : res) { + assert row.size() == 4; + + if (cnt == 0) { + assert new AffinityKey<>("p1", "o1").equals(row.get(0)); + assert "John White".equals(row.get(1)); + assert row.get(2).equals(25); + assert "A".equals(row.get(3)); + } + else if (cnt == 1) { + assert new AffinityKey<>("p2", "o1").equals(row.get(0)); + assert "Joe Black".equals(row.get(1)); + assert row.get(2).equals(35); + assert "A".equals(row.get(3)); + } + if (cnt == 2) { + assert new AffinityKey<>("p3", "o2").equals(row.get(0)); + assert "Mike Green".equals(row.get(1)); + assert row.get(2).equals(40); + assert "B".equals(row.get(3)); + } + + cnt++; + } + + assert cnt == 3; + } + + /** @throws Exception If failed. */ public void testExecute() throws Exception { QueryCursor<List<?>> qry = grid(0).cache(null) .query(new SqlFieldsQuery("select _KEY, name, age from Person")); http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1446aeb4/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCachePartitionedFieldsQueryP2PEnabledSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCachePartitionedFieldsQueryP2PEnabledSelfTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCachePartitionedFieldsQueryP2PEnabledSelfTest.java deleted file mode 100644 index ed19ccd..0000000 --- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCachePartitionedFieldsQueryP2PEnabledSelfTest.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * 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.distributed.near; - -import org.apache.ignite.configuration.*; - -/** - * Tests for fields queries. - */ -public class GridCachePartitionedFieldsQueryP2PEnabledSelfTest extends GridCachePartitionedFieldsQuerySelfTest { - /** {@inheritDoc} */ - @Override protected IgniteConfiguration getConfiguration(String gridName) throws Exception { - IgniteConfiguration c = super.getConfiguration(gridName); - - c.setPeerClassLoadingEnabled(true); - - return c; - } -} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1446aeb4/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCachePartitionedFieldsQuerySelfTest.java ---------------------------------------------------------------------- diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCachePartitionedFieldsQuerySelfTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCachePartitionedFieldsQuerySelfTest.java deleted file mode 100644 index 8f6b800..0000000 --- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCachePartitionedFieldsQuerySelfTest.java +++ /dev/null @@ -1,115 +0,0 @@ -/* - * 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.distributed.near; - -import org.apache.ignite.cache.*; -import org.apache.ignite.cache.affinity.*; -import org.apache.ignite.cache.store.jdbc.model.*; -import org.apache.ignite.configuration.*; -import org.apache.ignite.internal.*; -import org.apache.ignite.internal.processors.cache.*; -import org.apache.ignite.internal.processors.cache.query.*; -import org.jetbrains.annotations.*; - -import java.util.*; - -import static org.apache.ignite.cache.CacheMode.*; - -/** - * Tests for fields queries. - */ -public class GridCachePartitionedFieldsQuerySelfTest extends GridCacheAbstractFieldsQuerySelfTest { - /** {@inheritDoc} */ - @Override protected CacheMode cacheMode() { - return PARTITIONED; - } - - /** - * @return Distribution. - */ - protected NearCacheConfiguration nearConfiguration() { - return new NearCacheConfiguration(); - } - - /** {@inheritDoc} */ - @Override protected int gridCount() { - return 3; - } - - /** {@inheritDoc} */ - @Override protected CacheConfiguration cache(@Nullable String name, @Nullable String spiName) { - CacheConfiguration cc = super.cache(name, spiName); - - cc.setNearConfiguration(nearConfiguration()); - - cc.setIndexedTypes(String.class, Organization.class, - Integer.class, Integer.class, - AffinityKey.class, Person.class); - - return cc; - } - - /** - * @throws Exception If failed. - */ - public void testIncludeBackups() throws Exception { - CacheQuery<List<?>> qry = ((IgniteKernal)grid(0)).internalCache(null).context().queries().createSqlFieldsQuery( - "select _KEY, name, age from Person", false); - - qry.includeBackups(true); - - CacheQueryFuture<List<?>> fut = qry.execute(); - - List<List<?>> res = new ArrayList<>(fut.get()); - - assertNotNull("Result", res); - assertEquals("Result", res.size(), 6); - - Collections.sort(res, new Comparator<List<?>>() { - @Override public int compare(List<?> row1, List<?> row2) { - return ((Integer)row1.get(2)).compareTo((Integer)row2.get(2)); - } - }); - - int cnt = 0; - - for (List<?> row : res) { - assertEquals("Row size", 3, row.size()); - - if (cnt == 0 || cnt == 1) { - assertEquals("Key", new AffinityKey<>("p1", "o1"), row.get(0)); - assertEquals("Name", "John White", row.get(1)); - assertEquals("Age", 25, row.get(2)); - } - else if (cnt == 2 || cnt == 3) { - assertEquals("Key", new AffinityKey<>("p2", "o1"), row.get(0)); - assertEquals("Name", "Joe Black", row.get(1)); - assertEquals("Age", 35, row.get(2)); - } - else if (cnt == 4 || cnt == 5) { - assertEquals("Key", new AffinityKey<>("p3", "o2"), row.get(0)); - assertEquals("Name", "Mike Green", row.get(1)); - assertEquals("Age", 40, row.get(2)); - } - - cnt++; - } - - assertEquals("Result count", 6, cnt); - } -} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1446aeb4/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/distributed/replicated/GridCacheReplicatedFieldsQueryP2PEnableSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/distributed/replicated/GridCacheReplicatedFieldsQueryP2PEnableSelfTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/distributed/replicated/GridCacheReplicatedFieldsQueryP2PEnableSelfTest.java deleted file mode 100644 index c4d8ac7..0000000 --- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/distributed/replicated/GridCacheReplicatedFieldsQueryP2PEnableSelfTest.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * 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.distributed.replicated; - -import org.apache.ignite.configuration.*; - -/** - * Tests for fields queries. - */ -public class GridCacheReplicatedFieldsQueryP2PEnableSelfTest extends GridCacheReplicatedFieldsQuerySelfTest { - /** {@inheritDoc} */ - @Override protected IgniteConfiguration getConfiguration(String gridName) throws Exception { - IgniteConfiguration c = super.getConfiguration(gridName); - - c.setPeerClassLoadingEnabled(true); - - return c; - } -} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1446aeb4/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/distributed/replicated/GridCacheReplicatedFieldsQuerySelfTest.java ---------------------------------------------------------------------- diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/distributed/replicated/GridCacheReplicatedFieldsQuerySelfTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/distributed/replicated/GridCacheReplicatedFieldsQuerySelfTest.java deleted file mode 100644 index f129fe7..0000000 --- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/distributed/replicated/GridCacheReplicatedFieldsQuerySelfTest.java +++ /dev/null @@ -1,157 +0,0 @@ -/* - * 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.distributed.replicated; - -import org.apache.ignite.*; -import org.apache.ignite.cache.*; -import org.apache.ignite.cluster.*; -import org.apache.ignite.events.*; -import org.apache.ignite.internal.*; -import org.apache.ignite.internal.processors.cache.*; -import org.apache.ignite.internal.processors.cache.query.*; -import org.apache.ignite.internal.processors.query.*; -import org.apache.ignite.internal.util.future.*; -import org.apache.ignite.internal.util.typedef.*; -import org.apache.ignite.internal.util.typedef.internal.*; -import org.apache.ignite.lang.*; -import org.apache.ignite.testframework.*; - -import java.util.*; -import java.util.concurrent.*; - -import static org.apache.ignite.cache.CacheMode.*; -import static org.apache.ignite.events.EventType.*; - -/** - * Tests for fields queries. - */ -public class GridCacheReplicatedFieldsQuerySelfTest extends GridCacheAbstractFieldsQuerySelfTest { - /** {@inheritDoc} */ - @Override protected CacheMode cacheMode() { - return REPLICATED; - } - - /** {@inheritDoc} */ - @Override protected int gridCount() { - return 3; - } - - /** - * @throws Exception If failed. - */ - public void testNodeLeft() throws Exception { - hasCache = true; - - try { - final Map<UUID, Map<Long, GridFutureAdapter<GridQueryFieldsResult>>> map = - U.field(((IgniteKernal)grid(0)).internalCache().context().queries(), "fieldsQryRes"); - - // Ensure that iterators map empty. - map.clear(); - - Ignite g = startGrid(); - - GridCacheAdapter<Integer, Integer> cache = ((IgniteKernal)g).internalCache(null); - - CacheQuery<List<?>> q = cache.context().queries().createSqlFieldsQuery("select _key from Integer where _key >= " + - "0 order by _key", false); - - q.pageSize(50); - - ClusterGroup prj = g.cluster().forNodes(Arrays.asList(g.cluster().localNode(), grid(0).localNode())); - - q = q.projection(prj); - - CacheQueryFuture<List<?>> fut = q.execute(); - - assertEquals(0, fut.next().get(0)); - - // fut.nextX() does not guarantee the request has completed on remote node - // (we could receive page from local one), so we need to wait. - assertTrue(GridTestUtils.waitForCondition(new PA() { - @Override public boolean apply() { - return map.size() == 1; - } - }, getTestTimeout())); - - Map<Long, GridFutureAdapter<GridQueryFieldsResult>> futs = map.get(g.cluster().localNode().id()); - - assertEquals(1, futs.size()); - - final UUID nodeId = g.cluster().localNode().id(); - final CountDownLatch latch = new CountDownLatch(1); - - grid(0).events().localListen(new IgnitePredicate<Event>() { - @Override public boolean apply(Event evt) { - if (((DiscoveryEvent) evt).eventNode().id().equals(nodeId)) - latch.countDown(); - - return true; - } - }, EVT_NODE_LEFT); - - stopGrid(); - - latch.await(); - - assertEquals(0, map.size()); - } - finally { - // Ensure that additional node is stopped. - stopGrid(); - } - } - - /** - * @throws Exception If failed. - */ - public void testLostIterator() throws Exception { - GridCacheAdapter<Integer, Integer> cache = ((IgniteKernal)grid(0)).internalCache(null); - - CacheQueryFuture<List<?>> fut = null; - - for (int i = 0; i < GridCacheQueryManager.MAX_ITERATORS + 1; i++) { - CacheQuery<List<?>> q = cache.context().queries().createSqlFieldsQuery( - "select _key from Integer where _key >= 0 order by _key", false).projection(grid(0).cluster()); - - q.pageSize(50); - - CacheQueryFuture<List<?>> f = q.execute(); - - assertEquals(0, f.next().get(0)); - - if (fut == null) - fut = f; - } - - final CacheQueryFuture<List<?>> fut0 = fut; - - GridTestUtils.assertThrows(log, new Callable<Object>() { - @Override public Object call() throws Exception { - int i = 0; - - List<?> next; - - while ((next = fut0.next()) != null) - assertEquals(++i % 50, next.get(0)); - - return null; - } - }, IgniteException.class, null); - } -}