You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by ja...@apache.org on 2016/07/14 21:19:07 UTC
incubator-geode git commit: GEODE-1644: ClassCastException is thrown
with in queries against a map index
Repository: incubator-geode
Updated Branches:
refs/heads/develop ce0b7e7df -> 1744e7b5a
GEODE-1644: ClassCastException is thrown with in queries against a map index
Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/1744e7b5
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/1744e7b5
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/1744e7b5
Branch: refs/heads/develop
Commit: 1744e7b5a58c059433232585167b7313c00f8cb5
Parents: ce0b7e7
Author: Jason Huynh <hu...@gmail.com>
Authored: Mon Jun 27 10:40:10 2016 -0700
Committer: Jason Huynh <hu...@gmail.com>
Committed: Thu Jul 14 14:12:22 2016 -0700
----------------------------------------------------------------------
.../cache/query/internal/CompiledIn.java | 39 +-
.../cache/query/dunit/CompiledInDUnitTest.java | 701 +++++++++++++++++++
.../query/dunit/PdxStringQueryDUnitTest.java | 221 +++---
3 files changed, 840 insertions(+), 121 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1744e7b5/geode-core/src/main/java/com/gemstone/gemfire/cache/query/internal/CompiledIn.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/cache/query/internal/CompiledIn.java b/geode-core/src/main/java/com/gemstone/gemfire/cache/query/internal/CompiledIn.java
index 71f9704..42824df 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/cache/query/internal/CompiledIn.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/cache/query/internal/CompiledIn.java
@@ -591,18 +591,28 @@ public class CompiledIn extends AbstractCompiledValue implements Indexable {
if (evalColln instanceof Map) {
Iterator itr = ((Map)evalColln).entrySet().iterator();
while (itr.hasNext()) {
- this.queryIndex(itr.next(),indexInfo, results,iterOperands, indpndntItr, context, projAttrib,conditioningNeeded);
+ this.queryIndex(itr.next(),indexInfo, results,iterOperands, indpndntItr, context, projAttrib,conditioningNeeded);
}
}
else if (evalColln instanceof Collection) {
- //Removing duplicates from the collection
- HashSet set = new HashSet((Collection)evalColln);
- Iterator itr = set.iterator();
- while (itr.hasNext()) {
- this.queryIndex(itr.next(),indexInfo, results,iterOperands, indpndntItr, context, projAttrib,conditioningNeeded);
+ Object key = indexInfo.evaluateIndexKey(context);
+ //If the index is a map index, the key is actually an object[] tuple that contains the map key in the [1]
+ //and the evalColln in the [0] position
+ if (key instanceof Object[]) {
+ Iterator iterator = ((ResultsSet)((Object[]) key)[0]).iterator();
+ while (iterator.hasNext()) {
+ this.queryIndex(new Object[]{iterator.next(), ((Object[])key)[1]}, indexInfo, results, iterOperands, indpndntItr, context, projAttrib, conditioningNeeded);
+ }
+ }
+ else {
+ //Removing duplicates from the collection
+ HashSet set = new HashSet((Collection) evalColln);
+ Iterator itr = set.iterator();
+ while (itr.hasNext()) {
+ this.queryIndex(itr.next(), indexInfo, results, iterOperands, indpndntItr, context, projAttrib, conditioningNeeded);
+ }
}
-
}
else {
if (!evalColln.getClass().isArray()) {
@@ -840,6 +850,7 @@ public class CompiledIn extends AbstractCompiledValue implements Indexable {
}
assert idxInfo.length == 1;
Object key = idxInfo[0].evaluateIndexKey(context);
+
if (key != null && key.equals(QueryService.UNDEFINED))
return 0;
@@ -862,11 +873,19 @@ public class CompiledIn extends AbstractCompiledValue implements Indexable {
}
else if (evalColln instanceof Collection) {
- Iterator itr = ((Collection)evalColln).iterator();
- while (itr.hasNext()) {
- size+=idxInfo[0]._index.getSizeEstimate(itr.next(), TOK_EQ, idxInfo[0]._matchLevel);
+ if (key instanceof Object[]) {
+ Iterator iterator = ((ResultsSet)((Object[]) key)[0]).iterator();
+ while (iterator.hasNext()) {
+ size+=idxInfo[0]._index.getSizeEstimate(new Object[]{iterator.next(), ((Object[])key)[1]}, TOK_EQ, idxInfo[0]._matchLevel);
+ }
}
+ else {
+ Iterator itr = ((Collection) evalColln).iterator();
+ while (itr.hasNext()) {
+ size += idxInfo[0]._index.getSizeEstimate(itr.next(), TOK_EQ, idxInfo[0]._matchLevel);
+ }
+ }
}
else {
if (!evalColln.getClass().isArray()) {
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1744e7b5/geode-core/src/test/java/com/gemstone/gemfire/cache/query/dunit/CompiledInDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/cache/query/dunit/CompiledInDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/cache/query/dunit/CompiledInDUnitTest.java
new file mode 100644
index 0000000..ae44e50
--- /dev/null
+++ b/geode-core/src/test/java/com/gemstone/gemfire/cache/query/dunit/CompiledInDUnitTest.java
@@ -0,0 +1,701 @@
+/*
+ * 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 com.gemstone.gemfire.cache.query.dunit;
+
+import static com.gemstone.gemfire.internal.cache.execute.DistributedRegionFunctionExecutionDUnitTest.region;
+
+import java.io.IOException;
+import java.io.Serializable;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.stream.IntStream;
+
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+import com.gemstone.gemfire.cache.AttributesFactory;
+import com.gemstone.gemfire.cache.Cache;
+import com.gemstone.gemfire.cache.CacheException;
+import com.gemstone.gemfire.cache.DataPolicy;
+import com.gemstone.gemfire.cache.PartitionAttributes;
+import com.gemstone.gemfire.cache.PartitionAttributesFactory;
+import com.gemstone.gemfire.cache.Region;
+import com.gemstone.gemfire.cache.Scope;
+import com.gemstone.gemfire.cache.query.Query;
+import com.gemstone.gemfire.cache.query.QueryService;
+import com.gemstone.gemfire.cache.query.SelectResults;
+import com.gemstone.gemfire.cache.query.data.PortfolioPdx.Day;
+import com.gemstone.gemfire.cache.server.CacheServer;
+import com.gemstone.gemfire.cache30.CacheSerializableRunnable;
+import com.gemstone.gemfire.test.dunit.Host;
+import com.gemstone.gemfire.test.dunit.LogWriterUtils;
+import com.gemstone.gemfire.test.dunit.SerializableRunnable;
+import com.gemstone.gemfire.test.dunit.VM;
+import com.gemstone.gemfire.test.dunit.cache.internal.JUnit4CacheTestCase;
+import com.gemstone.gemfire.test.junit.categories.DistributedTest;
+
+@Category(DistributedTest.class)
+public class CompiledInDUnitTest extends JUnit4CacheTestCase {
+
+ final String rootRegionName = "root";
+ final String regionName = "PdxTest";
+ final String regName = "/" + rootRegionName + "/" + regionName;
+ private Host host;
+ private VM vm0;
+ private VM vm1;
+ private VM client;
+
+ public CompiledInDUnitTest() {
+ }
+
+ @Before
+ public void setup() {
+ host = Host.getHost(0);
+ vm0 = host.getVM(0);
+ vm1 = host.getVM(1);
+ client = host.getVM(3);
+ }
+
+ @After
+ public void closeVMs() {
+ closeClient(vm0);
+ closeClient(vm1);
+ closeClient(client);
+ }
+
+ protected void startBridgeServer(int port, boolean notifyBySubscription) throws IOException {
+
+ Cache cache = getCache();
+ CacheServer server = cache.addCacheServer();
+ server.setPort(port);
+ server.start();
+ int bridgeServerPort = server.getPort();
+ }
+
+ protected void configAndStartBridgeServer() {
+ try {
+ startBridgeServer(0, false);
+ } catch (Exception ex) {
+ Assert.fail("While starting CacheServer" + ex);
+ }
+ }
+
+ private void createPartitionRegion(final boolean isAccessor) {
+ AttributesFactory factory = new AttributesFactory();
+ PartitionAttributesFactory paf = new PartitionAttributesFactory();
+ if (isAccessor) {
+ paf.setLocalMaxMemory(0);
+ }
+ PartitionAttributes prAttr = paf.setTotalNumBuckets(20).setRedundantCopies(0).create();
+ factory.setPartitionAttributes(prAttr);
+ createRegion(this.regionName, this.rootRegionName, factory.create());
+ }
+
+
+ private void createReplicateRegion() {
+ AttributesFactory factory = new AttributesFactory();
+ factory.setScope(Scope.DISTRIBUTED_ACK);
+ factory.setDataPolicy(DataPolicy.REPLICATE);
+
+ createRegion(this.regionName, this.rootRegionName, factory.create());
+ }
+
+ public void closeClient(VM client) {
+ SerializableRunnable closeCache = new CacheSerializableRunnable("Close Client") {
+ public void run2() throws CacheException {
+ LogWriterUtils.getLogWriter().info("### Close Client. ###");
+ try {
+ closeCache();
+ disconnectFromDS();
+ } catch (Exception ex) {
+ LogWriterUtils.getLogWriter().info("### Failed to get close client. ###");
+ }
+ }
+ };
+
+ client.invoke(closeCache);
+ }
+
+
+ @Test
+ public void whenMultipleEnumBindParametersAreUsedWithInQueryAndMapIndexIsPresentReturnCorrectResults()
+ throws CacheException {
+ final int numberOfEntries = 10;
+ final int numExpectedResults = numberOfEntries / 2;
+ final String queryString = "select * from " + regName + " where getMapField['1'] in SET ($1,$2)";
+
+ vm0.invoke(new CacheSerializableRunnable("Create Bridge Server") {
+ public void run2() throws CacheException {
+ configAndStartBridgeServer();
+ createReplicateRegion();
+ createIndex("myIndex", "ts.getMapField[*]", regName + " ts");
+ createEntries(numberOfEntries, regionName);
+ }
+ });
+
+ Object[] bindArguments = new Object[] { DayEnum.MONDAY, DayEnum.TUESDAY };
+ vm1.invoke(executeQueryWithIndexOnReplicateRegion(numExpectedResults, queryString, bindArguments, "myIndex", "ts.getMapField[*]", regName + " ts"));
+ }
+
+ @Test
+ public void whenMultipleEnumBindParametersAreUsedWithInQueryReturnCorrectResults() throws CacheException {
+ final Host host = Host.getHost(0);
+ VM vm0 = host.getVM(0);
+ VM vm1 = host.getVM(1);
+ VM client = host.getVM(3);
+ final int numberOfEntries = 10;
+ final int numExpectedResults = numberOfEntries / 2;
+ final String queryString = "select * from " + regName + " where getMapField['1'] in SET ($1,$2)";
+
+ vm0.invoke(new CacheSerializableRunnable("Create Bridge Server") {
+ public void run2() throws CacheException {
+ configAndStartBridgeServer();
+ createReplicateRegion();
+ createEntries(numberOfEntries, regionName);
+ }
+ });
+
+ Object[] bindArguments = new Object[] { DayEnum.MONDAY, DayEnum.TUESDAY };
+ vm1.invoke(executeQueryOnReplicateRegion(numExpectedResults, queryString, bindArguments));
+ }
+
+ @Test
+ public void whenASingleEnumBindParameterIsUsedWithInQueryAndMapIndexIsPresentReturnCorrectResults()
+ throws CacheException {
+ final int numberOfEntries = 10;
+ final int numExpectedResults = numberOfEntries / 2;
+ final String queryString = "select * from " + regName + " where getMapField['1'] in SET ($1)";
+
+ vm0.invoke(new CacheSerializableRunnable("Create Bridge Server") {
+ public void run2() throws CacheException {
+ configAndStartBridgeServer();
+ createReplicateRegion();
+ createIndex("myIndex", "ts.getMapField[*]", regName + " ts");
+ createEntries(numberOfEntries, regionName);
+ }
+ });
+
+ Object[] bindArguments = new Object[] { DayEnum.MONDAY };
+ vm1.invoke(executeQueryWithIndexOnReplicateRegion(numExpectedResults, queryString, bindArguments, "myIndex", "ts.getMapField[*]", regName + " ts"));
+ }
+
+ @Test
+ public void whenASingleEnumBindParameterIsUsedWithInQueryReturnCorrectResults() throws CacheException {
+ final int numberOfEntries = 10;
+ final int numExpectedResults = numberOfEntries / 2;
+ final String queryString = "select * from " + regName + " where getMapField['1'] in SET ($1)";
+
+ vm0.invoke(new CacheSerializableRunnable("Create Bridge Server") {
+ public void run2() throws CacheException {
+ configAndStartBridgeServer();
+ createReplicateRegion();
+ createEntries(numberOfEntries, regionName);
+ }
+ });
+
+ Object[] bindArguments = new Object[] { DayEnum.MONDAY };
+ vm1.invoke(executeQueryOnReplicateRegion(numExpectedResults, queryString, bindArguments));
+ }
+
+ @Test
+ public void whenMultipleTypeBindParameterIsUsedWithInQueryAndMapIndexIsPresentReturnCorrectResults()
+ throws CacheException {
+ final int numberOfEntries = 10;
+ final int numExpectedResults = numberOfEntries / 2;
+
+ final String queryString = "select * from " + regName + " where getMapField['1'] in SET ($1,$2,$3)";
+
+ vm0.invoke(new CacheSerializableRunnable("Create Bridge Server") {
+ public void run2() throws CacheException {
+ configAndStartBridgeServer();
+ createReplicateRegion();
+ createIndex("myIndex", "ts.getMapField[*]", regName + " ts");
+ createEntries(numberOfEntries, regionName);
+ }
+ });
+
+ Object[] bindArguments = new Object[] { 2, DayEnum.MONDAY, "Tuesday" };
+ vm1.invoke(executeQueryWithIndexOnReplicateRegion(numExpectedResults, queryString, bindArguments, "myIndex", "ts.getMapField[*]", regName + " ts"));
+ }
+
+ @Test
+ public void whenMultipleEnumBindParametersAreUsedWithInQueryAndMapIndexIsPresentInPartitionRegionReturnCorrectResults()
+ throws CacheException {
+ final int numberOfEntries = 10;
+ final int numExpectedResults = numberOfEntries / 2;
+ final String queryString = "select * from " + regName + " where getMapField['1'] in SET ($1,$2)";
+
+ vm0.invoke(new CacheSerializableRunnable("Create Bridge Server") {
+ public void run2() throws CacheException {
+ configAndStartBridgeServer();
+ createPartitionRegion(false);
+ createIndex("myIndex", "ts.getMapField[*]", regName + " ts");
+ createEntries(numberOfEntries, regionName);
+ }
+ });
+
+ Object[] bindArguments = new Object[] { DayEnum.MONDAY, DayEnum.TUESDAY };
+ vm1.invoke(executeQueryOnPartitionRegion(numExpectedResults, queryString, bindArguments));
+ }
+
+ @Test
+ public void whenMultipleEnumBindParametersAreUsedWithInQueryInPartitionRegionReturnCorrectResults()
+ throws CacheException {
+ final int numberOfEntries = 10;
+ final int numExpectedResults = numberOfEntries / 2;
+ final String queryString = "select * from " + regName + " where getMapField['1'] in SET ($1,$2)";
+
+ vm0.invoke(new CacheSerializableRunnable("Create Bridge Server") {
+ public void run2() throws CacheException {
+ configAndStartBridgeServer();
+ createPartitionRegion(false);
+ createEntries(numberOfEntries, regionName);
+ }
+ });
+
+ Object[] bindArguments = new Object[] { DayEnum.MONDAY, DayEnum.TUESDAY };
+ vm1.invoke(executeQueryOnPartitionRegion(numExpectedResults, queryString, bindArguments));
+ }
+
+ @Test
+ public void whenASingleEnumBindParameterIsUsedWithInQueryAndMapIndexIsPresentInPartitionRegionReturnCorrectResults()
+ throws CacheException {
+ final int numberOfEntries = 10;
+ final int numExpectedResults = numberOfEntries / 2;
+ final String queryString = "select * from " + regName + " where getMapField['1'] in SET ($1)";
+
+ vm0.invoke(new CacheSerializableRunnable("Create Bridge Server") {
+ public void run2() throws CacheException {
+ configAndStartBridgeServer();
+ createPartitionRegion(false);
+ createIndex("myIndex", "ts.getMapField[*]", regName + " ts");
+ createEntries(numberOfEntries, regionName);
+ }
+ });
+
+ Object[] bindArguments = new Object[] { DayEnum.MONDAY };
+ vm1.invoke(executeQueryOnPartitionRegion(numExpectedResults, queryString, bindArguments));
+ }
+
+ @Test
+ public void whenASingleEnumBindParameterIsUsedWithInQueryInPartitionRegionReturnCorrectResults()
+ throws CacheException {
+ final int numberOfEntries = 10;
+ final int numExpectedResults = numberOfEntries / 2;
+ final String queryString = "select * from " + regName + " where getMapField['1'] in SET ($1)";
+
+ vm0.invoke(new CacheSerializableRunnable("Create Bridge Server") {
+ public void run2() throws CacheException {
+ configAndStartBridgeServer();
+ createPartitionRegion(false);
+ createEntries(numberOfEntries, regionName);
+ }
+ });
+
+ Object[] bindArguments = new Object[] { DayEnum.MONDAY };
+ vm1.invoke(executeQueryOnPartitionRegion(numExpectedResults, queryString, bindArguments));
+ }
+
+ @Test
+ public void whenMultipleTypeBindParameterIsUsedWithInQueryAndMapIndexIsPresentInPartitionRegionReturnCorrectResults()
+ throws CacheException {
+ final int numberOfEntries = 10;
+ final int numExpectedResults = numberOfEntries / 2;
+
+ final String queryString = "select * from " + regName + " where getMapField['1'] in SET ($1,$2,$3)";
+
+ vm0.invoke(new CacheSerializableRunnable("Create Bridge Server") {
+ public void run2() throws CacheException {
+ configAndStartBridgeServer();
+ createPartitionRegion(false);
+ createIndex("myIndex", "ts.getMapField[*]", regName + " ts");
+ createEntries(numberOfEntries, regionName);
+ }
+ });
+
+ Object[] bindArguments = new Object[] { 2, DayEnum.MONDAY, "Tuesday" };
+ vm1.invoke(executeQueryOnPartitionRegion(numExpectedResults, queryString, bindArguments));
+ }
+
+ @Test
+ public void whenEnumBindArgumentIsMatchedInSetWithIteratingFieldShouldReturnResults() throws CacheException {
+ final int numberOfEntries = 10;
+ final int numExpectedResults = numberOfEntries / 2;
+
+ final String queryString = "select * from " + regName + " where $1 in SET (getMapField['1'])";
+
+ vm0.invoke(new CacheSerializableRunnable("Create Bridge Server") {
+ public void run2() throws CacheException {
+ configAndStartBridgeServer();
+ createReplicateRegion();
+ createIndex("myIndex", "ts.getMapField[*]", regName + " ts");
+ createEntries(numberOfEntries, regionName);
+ }
+ });
+
+ Object[] bindArguments = new Object[] { DayEnum.MONDAY };
+ vm1.invoke(executeQueryWithIndexOnReplicateRegion(numExpectedResults, queryString, bindArguments, "myIndex", "ts.getMapField[*]", regName + " ts"));
+ }
+
+ @Test
+ public void whenEnumBindArgumentIsMatchedInSetWithMultipleIteratingFieldShouldReturnResults() throws CacheException {
+ final int numberOfEntries = 10;
+ final int numExpectedResults = numberOfEntries / 2;
+
+ final String queryString = "select * from " + regName + " where $1 in SET (getMapField['1'], getMapField['0'])";
+
+ vm0.invoke(new CacheSerializableRunnable("Create Bridge Server") {
+ public void run2() throws CacheException {
+ configAndStartBridgeServer();
+ createReplicateRegion();
+ createIndex("myIndex", "ts.getMapField[*]", regName + " ts");
+ createEntries(numberOfEntries, regionName);
+ }
+ });
+
+ Object[] bindArguments = new Object[] { DayEnum.TUESDAY };
+ vm1.invoke(executeQueryWithIndexOnReplicateRegion(numExpectedResults, queryString, bindArguments, "myIndex", "ts.getMapField[*]", regName + " ts"));
+ }
+
+ @Test
+ public void whenEnumBindArgumentIsMatchedInSetWithMultiTypedIteratingFieldShouldReturnResults() throws CacheException {
+ final int numberOfEntries = 10;
+ final int numExpectedResults = numberOfEntries;
+
+ final String queryString = "select * from " + regName + " where getMapField['1'] in SET (getMapField['1'], getMapField['2'], 'asdfasdf', getMapField['0'])";
+
+ vm0.invoke(new CacheSerializableRunnable("Create Bridge Server") {
+ public void run2() throws CacheException {
+ configAndStartBridgeServer();
+ createReplicateRegion();
+ createIndex("myIndex", "ts.getMapField[*]", regName + " ts");
+ createEntries(numberOfEntries, regionName);
+ }
+ });
+
+ Object[] bindArguments = new Object[] { DayEnum.TUESDAY };
+ vm1.invoke(executeQueryWithIndexOnReplicateRegion(numExpectedResults, queryString, bindArguments, "myIndex", "ts.getMapField[*]", regName + " ts"));
+ }
+
+ @Test
+ public void whenANDConditionWithInSetFiltersOutAllFieldsReturnNoResults() throws CacheException {
+ final int numberOfEntries = 10;
+ final int numExpectedResults = 0;
+
+ final String queryString = "select * from " + regName + " where getMapField['1'] in SET ($1, $2) AND getMapField['1'] in SET($3)";
+
+ vm0.invoke(new CacheSerializableRunnable("Create Bridge Server") {
+ public void run2() throws CacheException {
+ configAndStartBridgeServer();
+ createReplicateRegion();
+ createIndex("myIndex", "ts.getMapField[*]", regName + " ts");
+ createEntries(numberOfEntries, regionName);
+ }
+ });
+
+ Object[] bindArguments = new Object[] { DayEnum.MONDAY, DayEnum.TUESDAY, DayEnum.WEDNESDAY };
+ vm1.invoke(executeQueryWithIndexOnReplicateRegion(numExpectedResults, queryString, bindArguments, "myIndex", "ts.getMapField[*]", regName + " ts"));
+ }
+
+ @Test
+ public void whenANDConditionWithInSetMatchesReturnResults() throws CacheException {
+ final int numberOfEntries = 10;
+ final int numExpectedResults = 5;
+
+ final String queryString = "select * from " + regName + " where getMapField['1'] in SET ($1, $2) AND getMapField['2'] in SET($3)";
+
+ vm0.invoke(new CacheSerializableRunnable("Create Bridge Server") {
+ public void run2() throws CacheException {
+ configAndStartBridgeServer();
+ createReplicateRegion();
+ createIndex("myIndex", "ts.getMapField[*]", regName + " ts");
+ HashMap entries = new HashMap();
+ IntStream.range(0, 10).forEach(i -> {
+ MapTestObject object = new MapTestObject(i);
+ object.getMapField().put("2", DayEnum.WEDNESDAY);
+ entries.put("key" + i, object);
+ });
+ createEntries(regionName, entries.entrySet().iterator());
+ }
+ });
+
+ Object[] bindArguments = new Object[] { DayEnum.MONDAY, DayEnum.TUESDAY, DayEnum.WEDNESDAY };
+ vm1.invoke(executeQueryWithIndexOnReplicateRegion(numExpectedResults, queryString, bindArguments, "myIndex", "ts.getMapField[*]", regName + " ts"));
+ }
+
+ @Test
+ public void whenInSetCollectionContainsNonUniqueValuesMatchingSetShouldNotBeDuplicated() throws CacheException {
+ final int numberOfEntries = 10;
+ final int numExpectedResults = numberOfEntries / 2;
+
+ final String queryString = "select * from " + regName + " where getMapField['1'] in SET($1, $1, $1)";
+
+ vm0.invoke(new CacheSerializableRunnable("Create Bridge Server") {
+ public void run2() throws CacheException {
+ configAndStartBridgeServer();
+ createReplicateRegion();
+ createIndex("myIndex", "ts.getMapField[*]", regName + " ts");
+ createEntries(numberOfEntries, regionName);
+ }
+ });
+
+ Object[] bindArguments = new Object[] { DayEnum.MONDAY, DayEnum.TUESDAY, DayEnum.WEDNESDAY };
+ vm1.invoke(executeQueryWithIndexOnReplicateRegion(numExpectedResults, queryString, bindArguments, "myIndex", "ts.getMapField[*]", regName + " ts"));
+ }
+
+ @Test
+ public void whenORConditionWithInSetMatchesReturnResults() throws CacheException {
+ final int numberOfEntries = 10;
+ final int numExpectedResults = numberOfEntries;
+
+ final String queryString = "select * from " + regName + " where getMapField['1'] in SET ($1) OR getMapField['0'] in SET($2)";
+
+ vm0.invoke(new CacheSerializableRunnable("Create Bridge Server") {
+ public void run2() throws CacheException {
+ configAndStartBridgeServer();
+ createReplicateRegion();
+ createIndex("myIndex", "ts.getMapField[*]", regName + " ts");
+ createEntries(numberOfEntries, regionName);
+ }
+ });
+
+ Object[] bindArguments = new Object[] { DayEnum.MONDAY, DayEnum.TUESDAY };
+ vm1.invoke(executeQueryWithIndexOnReplicateRegion(numExpectedResults, queryString, bindArguments, "myIndex", "ts.getMapField[*]", regName + " ts"));
+ }
+
+ @Test
+ public void whenUsingAccessorMultipleEnumBindParametersAreUsedWithInQueryAndMapIndexIsPresentInPartitionRegionReturnCorrectResults()
+ throws CacheException {
+ final int numberOfEntries = 10;
+ final int numExpectedResults = numberOfEntries / 2;
+ final String queryString = "select * from " + regName + " where getMapField['1'] in SET ($1,$2)";
+
+ vm0.invoke(new CacheSerializableRunnable("Create Bridge Server") {
+ public void run2() throws CacheException {
+ configAndStartBridgeServer();
+ createPartitionRegion(false);
+ createIndex("myIndex", "ts.getMapField[*]", regName + " ts");
+ createEntries(numberOfEntries, regionName);
+ }
+ });
+
+ Object[] bindArguments = new Object[] { DayEnum.MONDAY, DayEnum.TUESDAY };
+ vm1.invoke(executeQueryWithAccessor(numExpectedResults, queryString, bindArguments));
+ }
+
+ @Test
+ public void whenUsingAccessorMultipleEnumBindParametersAreUsedWithInQueryInPartitionRegionReturnCorrectResults()
+ throws CacheException {
+ final int numberOfEntries = 10;
+ final int numExpectedResults = numberOfEntries / 2;
+ final String queryString = "select * from " + regName + " where getMapField['1'] in SET ($1,$2)";
+
+ vm0.invoke(new CacheSerializableRunnable("Create Bridge Server") {
+ public void run2() throws CacheException {
+ configAndStartBridgeServer();
+ createPartitionRegion(false);
+ createEntries(numberOfEntries, regionName);
+ }
+ });
+
+ Object[] bindArguments = new Object[] { DayEnum.MONDAY, DayEnum.TUESDAY };
+ vm1.invoke(executeQueryWithAccessor(numExpectedResults, queryString, bindArguments));
+ }
+
+ @Test
+ public void whenUsingAccessorASingleEnumBindParameterIsUsedWithInQueryAndMapIndexIsPresentInPartitionRegionReturnCorrectResults()
+ throws CacheException {
+ final int numberOfEntries = 10;
+ final int numExpectedResults = numberOfEntries / 2;
+ final String queryString = "select * from " + regName + " where getMapField['1'] in SET ($1)";
+
+ vm0.invoke(new CacheSerializableRunnable("Create Bridge Server") {
+ public void run2() throws CacheException {
+ configAndStartBridgeServer();
+ createPartitionRegion(false);
+ createIndex("myIndex", "ts.getMapField[*]", regName + " ts");
+ createEntries(numberOfEntries, regionName);
+ }
+ });
+
+ Object[] bindArguments = new Object[] { DayEnum.MONDAY };
+ vm1.invoke(executeQueryWithAccessor(numExpectedResults, queryString, bindArguments));
+ }
+
+ @Test
+ public void whenUsingAccessorASingleEnumBindParameterIsUsedWithInQueryInPartitionRegionReturnCorrectResults()
+ throws CacheException {
+ final int numberOfEntries = 10;
+ final int numExpectedResults = numberOfEntries / 2;
+ final String queryString = "select * from " + regName + " where getMapField['1'] in SET ($1)";
+
+ vm0.invoke(new CacheSerializableRunnable("Create Bridge Server") {
+ public void run2() throws CacheException {
+ configAndStartBridgeServer();
+ createPartitionRegion(false);
+ createEntries(numberOfEntries, regionName);
+ }
+ });
+
+ Object[] bindArguments = new Object[] { DayEnum.MONDAY };
+ vm1.invoke(executeQueryWithAccessor(numExpectedResults, queryString, bindArguments));
+ }
+
+ @Test
+ public void whenUsingAccessorMultipleTypeBindParameterIsUsedWithInQueryAndMapIndexIsPresentInPartitionRegionReturnCorrectResults()
+ throws CacheException {
+ final int numberOfEntries = 10;
+ final int numExpectedResults = numberOfEntries / 2;
+
+ final String queryString = "select * from " + regName + " where getMapField['1'] in SET ($1,$2,$3)";
+
+ vm0.invoke(new CacheSerializableRunnable("Create Bridge Server") {
+ public void run2() throws CacheException {
+ configAndStartBridgeServer();
+ createPartitionRegion(false);
+ createIndex("myIndex", "ts.getMapField[*]", regName + " ts");
+ createEntries(numberOfEntries, regionName);
+ }
+ });
+
+ Object[] bindArguments = new Object[] { 2, DayEnum.MONDAY, "Tuesday" };
+ vm1.invoke(executeQueryWithAccessor(numExpectedResults, queryString, bindArguments));
+ }
+
+
+ CacheSerializableRunnable executeQueryOnReplicateRegion(final int numberOfEntries,
+ final String queryString,
+ Object[] bindArguments) {
+ return new CacheSerializableRunnable("Execute Query in Replicated Region") {
+ public void run2() throws CacheException {
+ configAndStartBridgeServer();
+ createReplicateRegion();
+ verifyQuery(numberOfEntries, queryString, bindArguments);
+ }
+ };
+ }
+
+ CacheSerializableRunnable executeQueryWithIndexOnReplicateRegion(final int numberOfEntries,
+ final String queryString,
+ Object[] bindArguments,
+ String indexName,
+ String indexExpression,
+ String regionPath) {
+ return new CacheSerializableRunnable("Execute Query with Index in Replicated Region") {
+ public void run2() throws CacheException {
+ configAndStartBridgeServer();
+ createReplicateRegion();
+ createIndex(indexName, indexExpression, regionPath);
+ verifyQuery(numberOfEntries, queryString, bindArguments);
+ }
+ };
+ }
+
+
+ CacheSerializableRunnable executeQueryOnPartitionRegion(final int numberOfEntries,
+ final String queryString,
+ Object[] bindArguments) {
+ return new CacheSerializableRunnable("Execute Query in Partition Regions") {
+ public void run2() throws CacheException {
+ configAndStartBridgeServer();
+ createPartitionRegion(false);
+ verifyQuery(numberOfEntries, queryString, bindArguments);
+ }
+ };
+ }
+
+ CacheSerializableRunnable executeQueryWithAccessor(final int numberOfEntries,
+ final String queryString,
+ Object[] bindArguments) {
+ return new CacheSerializableRunnable("Execute Query with Accessor") {
+ public void run2() throws CacheException {
+ configAndStartBridgeServer();
+ createPartitionRegion(true);
+ verifyQuery(numberOfEntries, queryString, bindArguments);
+ }
+ };
+ }
+
+
+ void verifyQuery(final int numExpectedEntries, final String queryString, Object[] bindArguments) {
+ QueryService qs = getCache().getQueryService();
+ Query query = null;
+ SelectResults sr = null;
+ try {
+ query = qs.newQuery(queryString);
+
+ sr = (SelectResults) query.execute(bindArguments);
+ Iterator iterator = sr.iterator();
+
+ } catch (Exception ex) {
+ ex.printStackTrace();
+
+ Assert.fail("Failed to execute query, " + ex.getMessage());
+ }
+ Assert.assertEquals(numExpectedEntries, sr.size());
+ }
+
+ void createIndex(String indexName, String indexExpression, String regionPath) {
+ QueryService localQueryService = getCache().getQueryService();
+ try {
+ localQueryService.createIndex(indexName, indexExpression, regionPath);
+ } catch (Exception ex) {
+ Assert.fail("Failed to create index." + ex.getMessage());
+ }
+ }
+
+ void createEntries(final int numberOfEntries, String regionName) {
+ Region region = getRootRegion().getSubregion(regionName);
+ for (int i = 0; i < numberOfEntries; i++) {
+ region.put("key" + i, new MapTestObject(i));
+ }
+ }
+
+ void createEntries(String regionName, Iterator<Map.Entry> objects) {
+ Region region = getRootRegion().getSubregion(regionName);
+ objects.forEachRemaining((mk) -> {
+ region.put(mk.getKey(), mk.getValue());
+ });
+ }
+
+ enum DayEnum {
+ MONDAY, TUESDAY, WEDNESDAY
+ }//Map objects should be either [1] = DayEnum.Monday or [0] = DayEnum.Tuesday
+
+ static class MapTestObject implements Serializable {
+
+ private HashMap mapField = new HashMap<Object, Object>();
+
+ public MapTestObject(int i) {
+ int n = i % 2;
+ DayEnum enumVal = DayEnum.MONDAY;
+ if (n == 0) {
+ enumVal = DayEnum.TUESDAY;
+ }
+
+ mapField.put("" + n, enumVal);
+ }
+
+ public Map<String, DayEnum> getMapField() {
+ return mapField;
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/1744e7b5/geode-core/src/test/java/com/gemstone/gemfire/cache/query/dunit/PdxStringQueryDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/cache/query/dunit/PdxStringQueryDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/cache/query/dunit/PdxStringQueryDUnitTest.java
index 5124d85..ede8473 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/cache/query/dunit/PdxStringQueryDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/cache/query/dunit/PdxStringQueryDUnitTest.java
@@ -77,45 +77,44 @@ import com.gemstone.gemfire.test.junit.categories.DistributedTest;
@Category(DistributedTest.class)
public class PdxStringQueryDUnitTest extends JUnit4CacheTestCase {
-
+ final String rootRegionName = "root";
+ final String regionName = "PdxTest";
+ final String regName = "/" + rootRegionName + "/" + regionName;
private static int bridgeServerPort;
- private final String rootRegionName = "root";
- private final String regionName = "PdxTest";
- private final String regName = "/" + rootRegionName + "/" + regionName;
private final static int orderByQueryIndex = 11;
private final static int [] groupByQueryIndex = new int[]{7, 8, 9,10};
- private final String[] queryString = new String[] {
- "SELECT pos.secId FROM " + regName + " p, p.positions.values pos WHERE pos.secId LIKE '%L'",//0
- "SELECT pos.secId FROM " + regName + " p, p.positions.values pos where pos.secId = 'IBM'",//1
- "SELECT pos.secId, p.status FROM " + regName + " p, p.positions.values pos where pos.secId > 'APPL'",//2
- "SELECT pos.secId FROM " + regName + " p, p.positions.values pos WHERE pos.secId > 'APPL' and pos.secId < 'SUN'",//3
- "select pos.secId from " + regName + " p, p.positions.values pos where pos.secId IN SET ('YHOO', 'VMW')",//4
- "select pos.secId from " + regName + " p, p.positions.values pos where NOT (pos.secId = 'VMW')",//5
- "select pos.secId from " + regName + " p, p.positions.values pos where NOT (pos.secId IN SET('SUN', 'ORCL')) ",//6
- "select pos.secId , count(pos.id) from " + regName + " p, p.positions.values pos where pos.secId > 'APPL' group by pos.secId ",//7
- "select pos.secId , sum(pos.id) from " + regName + " p, p.positions.values pos where pos.secId > 'APPL' group by pos.secId ",//8,
- "select pos.secId , count(distinct pos.secId) from " + regName + " p, p.positions.values pos where pos.secId > 'APPL' group by pos.secId ",//9
- "select count(distinct pos.secId) from " + regName + " p, p.positions.values pos where pos.secId > 'APPL' ",//10
- "SELECT distinct pos.secId FROM " + regName + " p, p.positions.values pos order by pos.secId",//11
- "SELECT distinct pos.secId FROM " + regName + " p, p.positions.values pos WHERE p.ID > 1 order by pos.secId limit 5",//12
+ private final String[] queryString = new String[] {
+ "SELECT pos.secId FROM " + regName + " p, p.positions.values pos WHERE pos.secId LIKE '%L'",//0
+ "SELECT pos.secId FROM " + regName + " p, p.positions.values pos where pos.secId = 'IBM'",//1
+ "SELECT pos.secId, p.status FROM " + regName + " p, p.positions.values pos where pos.secId > 'APPL'",//2
+ "SELECT pos.secId FROM " + regName + " p, p.positions.values pos WHERE pos.secId > 'APPL' and pos.secId < 'SUN'",//3
+ "select pos.secId from " + regName + " p, p.positions.values pos where pos.secId IN SET ('YHOO', 'VMW')",//4
+ "select pos.secId from " + regName + " p, p.positions.values pos where NOT (pos.secId = 'VMW')",//5
+ "select pos.secId from " + regName + " p, p.positions.values pos where NOT (pos.secId IN SET('SUN', 'ORCL')) ",//6
+ "select pos.secId , count(pos.id) from " + regName + " p, p.positions.values pos where pos.secId > 'APPL' group by pos.secId ",//7
+ "select pos.secId , sum(pos.id) from " + regName + " p, p.positions.values pos where pos.secId > 'APPL' group by pos.secId ",//8,
+ "select pos.secId , count(distinct pos.secId) from " + regName + " p, p.positions.values pos where pos.secId > 'APPL' group by pos.secId ",//9
+ "select count(distinct pos.secId) from " + regName + " p, p.positions.values pos where pos.secId > 'APPL' ",//10
+ "SELECT distinct pos.secId FROM " + regName + " p, p.positions.values pos order by pos.secId",//11
+ "SELECT distinct pos.secId FROM " + regName + " p, p.positions.values pos WHERE p.ID > 1 order by pos.secId limit 5",//12
};
- private final String[] queryString2 = new String[] {
- "SELECT pos.secIdIndexed FROM " + regName + " p, p.positions.values pos WHERE pos.secIdIndexed LIKE '%L'",//0
- "SELECT pos.secIdIndexed FROM " + regName + " p, p.positions.values pos where pos.secIdIndexed = 'IBM'",//1
- "SELECT pos.secIdIndexed, p.status FROM " + regName + " p, p.positions.values pos where pos.secIdIndexed > 'APPL'",//2
- "SELECT pos.secIdIndexed FROM " + regName + " p, p.positions.values pos WHERE pos.secIdIndexed > 'APPL' and pos.secIdIndexed < 'SUN'",//3
- "select pos.secIdIndexed from " + regName + " p, p.positions.values pos where pos.secIdIndexed IN SET ('YHOO', 'VMW')",//4
- "select pos.secIdIndexed from " + regName + " p, p.positions.values pos where NOT (pos.secIdIndexed = 'VMW')",//5
- "select pos.secIdIndexed from " + regName + " p, p.positions.values pos where NOT (pos.secIdIndexed IN SET('SUN', 'ORCL')) ",//6
- "select pos.secIdIndexed , count(pos.id) from " + regName + " p, p.positions.values pos where pos.secIdIndexed > 'APPL' group by pos.secIdIndexed ",//7
- "select pos.secIdIndexed , sum(pos.id) from " + regName + " p, p.positions.values pos where pos.secIdIndexed > 'APPL' group by pos.secIdIndexed ",//8
- "select pos.secIdIndexed , count(distinct pos.secIdIndexed) from " + regName + " p, p.positions.values pos where pos.secIdIndexed > 'APPL' group by pos.secIdIndexed ",//9
- "select count(distinct pos.secIdIndexed) from " + regName + " p, p.positions.values pos where pos.secIdIndexed > 'APPL' ",//10
- "SELECT distinct pos.secIdIndexed FROM " + regName + " p, p.positions.values pos order by pos.secIdIndexed",//11
- "SELECT distinct pos.secIdIndexed FROM " + regName + " p, p.positions.values pos WHERE p.ID > 1 order by pos.secIdIndexed limit 5",//12
+ private final String[] queryString2 = new String[] {
+ "SELECT pos.secIdIndexed FROM " + regName + " p, p.positions.values pos WHERE pos.secIdIndexed LIKE '%L'",//0
+ "SELECT pos.secIdIndexed FROM " + regName + " p, p.positions.values pos where pos.secIdIndexed = 'IBM'",//1
+ "SELECT pos.secIdIndexed, p.status FROM " + regName + " p, p.positions.values pos where pos.secIdIndexed > 'APPL'",//2
+ "SELECT pos.secIdIndexed FROM " + regName + " p, p.positions.values pos WHERE pos.secIdIndexed > 'APPL' and pos.secIdIndexed < 'SUN'",//3
+ "select pos.secIdIndexed from " + regName + " p, p.positions.values pos where pos.secIdIndexed IN SET ('YHOO', 'VMW')",//4
+ "select pos.secIdIndexed from " + regName + " p, p.positions.values pos where NOT (pos.secIdIndexed = 'VMW')",//5
+ "select pos.secIdIndexed from " + regName + " p, p.positions.values pos where NOT (pos.secIdIndexed IN SET('SUN', 'ORCL')) ",//6
+ "select pos.secIdIndexed , count(pos.id) from " + regName + " p, p.positions.values pos where pos.secIdIndexed > 'APPL' group by pos.secIdIndexed ",//7
+ "select pos.secIdIndexed , sum(pos.id) from " + regName + " p, p.positions.values pos where pos.secIdIndexed > 'APPL' group by pos.secIdIndexed ",//8
+ "select pos.secIdIndexed , count(distinct pos.secIdIndexed) from " + regName + " p, p.positions.values pos where pos.secIdIndexed > 'APPL' group by pos.secIdIndexed ",//9
+ "select count(distinct pos.secIdIndexed) from " + regName + " p, p.positions.values pos where pos.secIdIndexed > 'APPL' ",//10
+ "SELECT distinct pos.secIdIndexed FROM " + regName + " p, p.positions.values pos order by pos.secIdIndexed",//11
+ "SELECT distinct pos.secIdIndexed FROM " + regName + " p, p.positions.values pos WHERE p.ID > 1 order by pos.secIdIndexed limit 5",//12
};
@Test
@@ -130,7 +129,7 @@ public class PdxStringQueryDUnitTest extends JUnit4CacheTestCase {
// Start server1 and create index
server0.invoke(new CacheSerializableRunnable("Create Server1") {
public void run2() throws CacheException {
- configAndStartBridgeServer(false,false,false);
+ configAndStartBridgeServer(false, false, false);
// create a local query service
QueryService localQueryService = null;
try {
@@ -141,7 +140,7 @@ public class PdxStringQueryDUnitTest extends JUnit4CacheTestCase {
Index index = null;
// create an index on statusIndexed is created
try {
- index = localQueryService.createIndex("secIdIndex2", "pos.secIdIndexed", regName + " p, p.positions.values pos");
+ index = localQueryService.createIndex("secIdIndex2", "pos.secIdIndexed", regName + " p, p.positions.values pos");
if(!(index instanceof RangeIndex)){
fail("Range Index should have been created instead of " + index.getClass());
}
@@ -154,7 +153,7 @@ public class PdxStringQueryDUnitTest extends JUnit4CacheTestCase {
// Start server2
server1.invoke(new CacheSerializableRunnable("Create Server2") {
public void run2() throws CacheException {
- configAndStartBridgeServer(false,false, false);
+ configAndStartBridgeServer(false, false, false);
Region region = getRootRegion().getSubregion(regionName);
}
});
@@ -162,7 +161,7 @@ public class PdxStringQueryDUnitTest extends JUnit4CacheTestCase {
// Start server3
server2.invoke(new CacheSerializableRunnable("Create Server3") {
public void run2() throws CacheException {
- configAndStartBridgeServer(false,false, false);
+ configAndStartBridgeServer(false, false, false);
Region region = getRootRegion().getSubregion(regionName);
}
});
@@ -370,11 +369,11 @@ public class PdxStringQueryDUnitTest extends JUnit4CacheTestCase {
}
}
});
-
- this.closeClient(server2);
- this.closeClient(client);
- this.closeClient(server1);
- this.closeClient(server0);
+
+ closeClient(server2);
+ closeClient(client);
+ closeClient(server1);
+ closeClient(server0);
}
@Test
@@ -389,7 +388,7 @@ public class PdxStringQueryDUnitTest extends JUnit4CacheTestCase {
// Start server1 and create index
server0.invoke(new CacheSerializableRunnable("Create Server1") {
public void run2() throws CacheException {
- configAndStartBridgeServer(false,false,false);
+ configAndStartBridgeServer(false, false, false);
// create a local query service
QueryService localQueryService = null;
try {
@@ -413,7 +412,7 @@ public class PdxStringQueryDUnitTest extends JUnit4CacheTestCase {
// Start server2
server1.invoke(new CacheSerializableRunnable("Create Server2") {
public void run2() throws CacheException {
- configAndStartBridgeServer(false,false, false);
+ configAndStartBridgeServer(false, false, false);
Region region = getRootRegion().getSubregion(regionName);
}
});
@@ -421,7 +420,7 @@ public class PdxStringQueryDUnitTest extends JUnit4CacheTestCase {
// Start server3
server2.invoke(new CacheSerializableRunnable("Create Server3") {
public void run2() throws CacheException {
- configAndStartBridgeServer(false,false, false);
+ configAndStartBridgeServer(false, false, false);
Region region = getRootRegion().getSubregion(regionName);
}
});
@@ -585,11 +584,11 @@ public class PdxStringQueryDUnitTest extends JUnit4CacheTestCase {
}
}
});
-
- this.closeClient(server2);
- this.closeClient(client);
- this.closeClient(server1);
- this.closeClient(server0);
+
+ closeClient(server2);
+ closeClient(client);
+ closeClient(server1);
+ closeClient(server0);
}
@Test
@@ -603,7 +602,7 @@ public class PdxStringQueryDUnitTest extends JUnit4CacheTestCase {
// Start server1 and create index
server0.invoke(new CacheSerializableRunnable("Create Server1") {
public void run2() throws CacheException {
- configAndStartBridgeServer(false,false,false);
+ configAndStartBridgeServer(false, false, false);
// create a local query service
QueryService localQueryService = null;
try {
@@ -614,7 +613,7 @@ public class PdxStringQueryDUnitTest extends JUnit4CacheTestCase {
// Verify the type of index created
Index index = null;
try {
- index = localQueryService.createIndex("secIdIndex", "pos.secId", regName + " p, p.positions.values pos");
+ index = localQueryService.createIndex("secIdIndex", "pos.secId", regName + " p, p.positions.values pos");
if(!(index instanceof RangeIndex) ){
fail("Range Index should have been created instead of "+ index.getClass());
}
@@ -627,7 +626,7 @@ public class PdxStringQueryDUnitTest extends JUnit4CacheTestCase {
// Start server2
server1.invoke(new CacheSerializableRunnable("Create Server2") {
public void run2() throws CacheException {
- configAndStartBridgeServer(false,false, false);
+ configAndStartBridgeServer(false, false, false);
Region region = getRootRegion().getSubregion(regionName);
}
});
@@ -635,7 +634,7 @@ public class PdxStringQueryDUnitTest extends JUnit4CacheTestCase {
// Start server3
server2.invoke(new CacheSerializableRunnable("Create Server3") {
public void run2() throws CacheException {
- configAndStartBridgeServer(false,false, false);
+ configAndStartBridgeServer(false, false, false);
Region region = getRootRegion().getSubregion(regionName);
}
});
@@ -790,11 +789,11 @@ public class PdxStringQueryDUnitTest extends JUnit4CacheTestCase {
}
}
});
-
- this.closeClient(server2);
- this.closeClient(client);
- this.closeClient(server1);
- this.closeClient(server0);
+
+ closeClient(server2);
+ closeClient(client);
+ closeClient(server1);
+ closeClient(server0);
}
@Test
@@ -809,7 +808,7 @@ public class PdxStringQueryDUnitTest extends JUnit4CacheTestCase {
// Start server1 and create index
server0.invoke(new CacheSerializableRunnable("Create Server1") {
public void run2() throws CacheException {
- configAndStartBridgeServer(isPr,false,false);
+ configAndStartBridgeServer(isPr, false, false);
// create a local query service
QueryService localQueryService = null;
try {
@@ -821,7 +820,7 @@ public class PdxStringQueryDUnitTest extends JUnit4CacheTestCase {
Index index = null;
// In the NO_INDEX case where no indexes are used an index on another field statusIndexed is created
try {
- index = localQueryService.createIndex("secIdIndex", "pos.secIdIndexed", regName + " p, p.positions.values pos");
+ index = localQueryService.createIndex("secIdIndex", "pos.secIdIndexed", regName + " p, p.positions.values pos");
if(index instanceof PartitionedIndex){
for(Object o : ((PartitionedIndex)index).getBucketIndexes()){
if(!(o instanceof RangeIndex) ){
@@ -841,7 +840,7 @@ public class PdxStringQueryDUnitTest extends JUnit4CacheTestCase {
// Start server2
server1.invoke(new CacheSerializableRunnable("Create Server2") {
public void run2() throws CacheException {
- configAndStartBridgeServer(isPr,false, false);
+ configAndStartBridgeServer(isPr, false, false);
Region region = getRootRegion().getSubregion(regionName);
}
});
@@ -849,7 +848,7 @@ public class PdxStringQueryDUnitTest extends JUnit4CacheTestCase {
// Start server3
server2.invoke(new CacheSerializableRunnable("Create Server3") {
public void run2() throws CacheException {
- configAndStartBridgeServer(isPr,false, false);
+ configAndStartBridgeServer(isPr, false, false);
Region region = getRootRegion().getSubregion(regionName);
}
});
@@ -1056,11 +1055,11 @@ public class PdxStringQueryDUnitTest extends JUnit4CacheTestCase {
}
}
});
-
- this.closeClient(server2);
- this.closeClient(client);
- this.closeClient(server1);
- this.closeClient(server0);
+
+ closeClient(server2);
+ closeClient(client);
+ closeClient(server1);
+ closeClient(server0);
}
@Test
@@ -1075,7 +1074,7 @@ public class PdxStringQueryDUnitTest extends JUnit4CacheTestCase {
// Start server1 and create index
server0.invoke(new CacheSerializableRunnable("Create Server1") {
public void run2() throws CacheException {
- configAndStartBridgeServer(isPr,false,false);
+ configAndStartBridgeServer(isPr, false, false);
// create a local query service
QueryService localQueryService = null;
try {
@@ -1106,7 +1105,7 @@ public class PdxStringQueryDUnitTest extends JUnit4CacheTestCase {
// Start server2
server1.invoke(new CacheSerializableRunnable("Create Server2") {
public void run2() throws CacheException {
- configAndStartBridgeServer(isPr,false, false);
+ configAndStartBridgeServer(isPr, false, false);
Region region = getRootRegion().getSubregion(regionName);
}
});
@@ -1114,7 +1113,7 @@ public class PdxStringQueryDUnitTest extends JUnit4CacheTestCase {
// Start server3
server2.invoke(new CacheSerializableRunnable("Create Server3") {
public void run2() throws CacheException {
- configAndStartBridgeServer(isPr,false, false);
+ configAndStartBridgeServer(isPr, false, false);
Region region = getRootRegion().getSubregion(regionName);
}
});
@@ -1284,11 +1283,11 @@ public class PdxStringQueryDUnitTest extends JUnit4CacheTestCase {
}
}
});
-
- this.closeClient(server2);
- this.closeClient(client);
- this.closeClient(server1);
- this.closeClient(server0);
+
+ closeClient(server2);
+ closeClient(client);
+ closeClient(server1);
+ closeClient(server0);
}
@Test
@@ -1303,7 +1302,7 @@ public class PdxStringQueryDUnitTest extends JUnit4CacheTestCase {
// Start server1 and create index
server0.invoke(new CacheSerializableRunnable("Create Server1") {
public void run2() throws CacheException {
- configAndStartBridgeServer(isPr,false,false);
+ configAndStartBridgeServer(isPr, false, false);
// create a local query service
QueryService localQueryService = null;
try {
@@ -1314,7 +1313,7 @@ public class PdxStringQueryDUnitTest extends JUnit4CacheTestCase {
// Verify the type of index created
Index index = null;
try {
- index = localQueryService.createIndex("secIdIndex", "pos.secId", regName + " p, p.positions.values pos");
+ index = localQueryService.createIndex("secIdIndex", "pos.secId", regName + " p, p.positions.values pos");
if(index instanceof PartitionedIndex){
for(Object o : ((PartitionedIndex)index).getBucketIndexes()){
if(!(o instanceof RangeIndex) ){
@@ -1334,7 +1333,7 @@ public class PdxStringQueryDUnitTest extends JUnit4CacheTestCase {
// Start server2
server1.invoke(new CacheSerializableRunnable("Create Server2") {
public void run2() throws CacheException {
- configAndStartBridgeServer(isPr,false, false);
+ configAndStartBridgeServer(isPr, false, false);
Region region = getRootRegion().getSubregion(regionName);
}
});
@@ -1342,7 +1341,7 @@ public class PdxStringQueryDUnitTest extends JUnit4CacheTestCase {
// Start server3
server2.invoke(new CacheSerializableRunnable("Create Server3") {
public void run2() throws CacheException {
- configAndStartBridgeServer(isPr,false, false);
+ configAndStartBridgeServer(isPr, false, false);
Region region = getRootRegion().getSubregion(regionName);
}
});
@@ -1512,11 +1511,11 @@ public class PdxStringQueryDUnitTest extends JUnit4CacheTestCase {
}
}
});
-
- this.closeClient(server2);
- this.closeClient(client);
- this.closeClient(server1);
- this.closeClient(server0);
+
+ closeClient(server2);
+ closeClient(client);
+ closeClient(server1);
+ closeClient(server0);
}
@Test
@@ -1531,7 +1530,7 @@ public class PdxStringQueryDUnitTest extends JUnit4CacheTestCase {
// Start server1 and create index
server0.invoke(new CacheSerializableRunnable("Create Server1") {
public void run2() throws CacheException {
- configAndStartBridgeServer(isPr,false,false);
+ configAndStartBridgeServer(isPr, false, false);
// create a local query service
QueryService localQueryService = null;
try {
@@ -1562,7 +1561,7 @@ public class PdxStringQueryDUnitTest extends JUnit4CacheTestCase {
// Start server2
server1.invoke(new CacheSerializableRunnable("Create Server2") {
public void run2() throws CacheException {
- configAndStartBridgeServer(isPr,false, false);
+ configAndStartBridgeServer(isPr, false, false);
Region region = getRootRegion().getSubregion(regionName);
}
});
@@ -1570,7 +1569,7 @@ public class PdxStringQueryDUnitTest extends JUnit4CacheTestCase {
// Start server3
server2.invoke(new CacheSerializableRunnable("Create Server3") {
public void run2() throws CacheException {
- configAndStartBridgeServer(isPr,false, false);
+ configAndStartBridgeServer(isPr, false, false);
Region region = getRootRegion().getSubregion(regionName);
}
});
@@ -1650,8 +1649,8 @@ public class PdxStringQueryDUnitTest extends JUnit4CacheTestCase {
}
// Querying the fields with null values
- String[] qs = {"SELECT pos.secId FROM " + regName + " p, p.positions.values pos where p.status = null",
- "SELECT p.pkid FROM " + regName + " p, p.positions.values pos where pos.secId = null"};
+ String[] qs = { "SELECT pos.secId FROM " + regName + " p, p.positions.values pos where p.status = null",
+ "SELECT p.pkid FROM " + regName + " p, p.positions.values pos where pos.secId = null"};
for(int i = 0; i <2; i++){
try {
@@ -1673,11 +1672,11 @@ public class PdxStringQueryDUnitTest extends JUnit4CacheTestCase {
}
}
});
-
- this.closeClient(server2);
- this.closeClient(client);
- this.closeClient(server1);
- this.closeClient(server0);
+
+ closeClient(server2);
+ closeClient(client);
+ closeClient(server1);
+ closeClient(server0);
}
@@ -1889,12 +1888,11 @@ public class PdxStringQueryDUnitTest extends JUnit4CacheTestCase {
disconnectAllFromDS();
}
-
+
protected void configAndStartBridgeServer(boolean isPr, boolean isAccessor, boolean asyncIndex) {
AttributesFactory factory = new AttributesFactory();
if (isPr) {
PartitionAttributesFactory paf = new PartitionAttributesFactory();
- //factory.setDataPolicy(DataPolicy.PARTITION);
if (isAccessor){
paf.setLocalMaxMemory(0);
}
@@ -1902,7 +1900,7 @@ public class PdxStringQueryDUnitTest extends JUnit4CacheTestCase {
factory.setPartitionAttributes(prAttr);
} else {
factory.setScope(Scope.DISTRIBUTED_ACK);
- factory.setDataPolicy(DataPolicy.REPLICATE);
+ factory.setDataPolicy(DataPolicy.REPLICATE);
}
if (asyncIndex) {
factory.setIndexMaintenanceSynchronous(!asyncIndex);
@@ -1914,6 +1912,7 @@ public class PdxStringQueryDUnitTest extends JUnit4CacheTestCase {
Assert.fail("While starting CacheServer", ex);
}
}
+
/**
* Starts a bridge server on the given port, using the given
* deserializeValues and notifyBySubscription to serve up the
@@ -1941,20 +1940,20 @@ public class PdxStringQueryDUnitTest extends JUnit4CacheTestCase {
/* Close Client */
public void closeClient(VM client) {
- SerializableRunnable closeCache =
- new CacheSerializableRunnable("Close Client") {
- public void run2() throws CacheException {
- LogWriterUtils.getLogWriter().info("### Close Client. ###");
- try {
- closeCache();
- disconnectFromDS();
- } catch (Exception ex) {
- LogWriterUtils.getLogWriter().info("### Failed to get close client. ###");
- }
- }
- };
-
- client.invoke(closeCache);
+ SerializableRunnable closeCache =
+ new CacheSerializableRunnable("Close Client") {
+ public void run2() throws CacheException {
+ LogWriterUtils.getLogWriter().info("### Close Client. ###");
+ try {
+ closeCache();
+ disconnectFromDS();
+ } catch (Exception ex) {
+ LogWriterUtils.getLogWriter().info("### Failed to get close client. ###");
+ }
+ }
+ };
+
+ client.invoke(closeCache);
}
public void createPool(VM vm, String poolName, String server, int port, boolean subscriptionEnabled) {