blob: d35a0ac2f46bc402e1cae3d03882bb4188274888 [file] [log] [blame]
/*
* 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.geode.cache.query.functional;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.util.ArrayList;
import java.util.HashMap;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.experimental.categories.Category;
import org.apache.geode.cache.AttributesFactory;
import org.apache.geode.cache.Cache;
import org.apache.geode.cache.DataPolicy;
import org.apache.geode.cache.PartitionAttributesFactory;
import org.apache.geode.cache.Region;
import org.apache.geode.cache.RegionAttributes;
import org.apache.geode.cache.query.CacheUtils;
import org.apache.geode.cache.query.IndexType;
import org.apache.geode.cache.query.Query;
import org.apache.geode.cache.query.QueryService;
import org.apache.geode.cache.query.SelectResults;
import org.apache.geode.cache.query.data.Portfolio;
import org.apache.geode.distributed.internal.DistributionConfig;
import org.apache.geode.test.junit.categories.OQLQueryTest;
/**
* This test runs {Select COUNT(*) from /regionName [where clause]} queries on different types of
* regions with and without multiple indexes.
*/
@Category({OQLQueryTest.class})
public class CountStarJUnitTest {
private static String regionName = "test";
private static String exampleRegionName = "employee";
private int numElem = 100;
@Before
public void setUp() throws Exception {
System.setProperty(DistributionConfig.GEMFIRE_PREFIX + "Query.VERBOSE", "true");
CacheUtils.startCache();
}
@After
public void tearDown() throws Exception {
CacheUtils.closeCache();
}
private static HashMap<String, Integer> countStarQueries = new HashMap<String, Integer>();
// EquiJoin Queries
private static String[] countStarQueriesWithEquiJoins = {
"select COUNT(*) from /" + regionName + " p, /" + exampleRegionName
+ " e where p.ID = e.ID AND p.ID > 0",
"select COUNT(*) from /" + regionName + " p, /" + exampleRegionName
+ " e where p.ID = e.ID AND p.ID > 20 AND e.ID > 40",
"select COUNT(*) from /" + regionName + " p, /" + exampleRegionName
+ " e where p.ID = e.ID AND p.ID > 0 AND p.status = 'active'",
"select COUNT(*) from /" + regionName + " p, /" + exampleRegionName
+ " e where p.ID = e.ID OR e.status = 'active' "};
// Queries with COUNT(*) to be executed with corresponding result count.
static {
countStarQueries.put("select COUNT(*) from /" + regionName, 100);
countStarQueries.put("select COUNT(*) from /" + regionName + " where ID > 0", 100);
countStarQueries.put("select COUNT(*) from /" + regionName + " where ID < 0", 0);
countStarQueries.put("select COUNT(*) from /" + regionName + " where ID > 0 LIMIT 50", 50);
countStarQueries
.put("select COUNT(*) from /" + regionName + " where ID > 0 AND status='active'", 50);
countStarQueries.put("select COUNT(*) from /" + regionName + " where ID > 0 OR status='active'",
100);
countStarQueries
.put("select COUNT(*) from /" + regionName + " where ID > 0 AND status LIKE 'act%'", 50);
countStarQueries
.put("select COUNT(*) from /" + regionName + " where ID > 0 OR status LIKE 'ina%'", 100);
countStarQueries.put("select COUNT(*) from /" + regionName + " where ID IN SET(1, 2, 3, 4, 5)",
5);
countStarQueries.put("select COUNT(*) from /" + regionName + " where NOT (ID > 5)", 5);
// StructSet queries.
countStarQueries.put("select COUNT(*) from /" + regionName
+ " p, p.positions.values pos where p.ID > 0 AND pos.secId = 'IBM'", 15);
countStarQueries.put("select COUNT(*) from /" + regionName
+ " p, p.positions.values pos where p.ID > 0 AND pos.secId = 'IBM' LIMIT 5", 5);
countStarQueries.put("select DISTINCT COUNT(*) from /" + regionName
+ " p, p.positions.values pos where p.ID > 0 AND pos.secId = 'IBM' ORDER BY p.ID", 15);
countStarQueries.put(
"select COUNT(*) from /" + regionName
+ " p, p.positions.values pos where p.ID > 0 AND p.status = 'active' AND pos.secId = 'IBM'",
8);
countStarQueries.put(
"select COUNT(*) from /" + regionName
+ " p, p.positions.values pos where p.ID > 0 AND p.status = 'active' OR pos.secId = 'IBM'",
107);
countStarQueries.put(
"select COUNT(*) from /" + regionName
+ " p, p.positions.values pos where p.ID > 0 OR p.status = 'active' OR pos.secId = 'IBM'",
200);
countStarQueries.put(
"select COUNT(*) from /" + regionName
+ " p, p.positions.values pos where p.ID > 0 OR p.status = 'active' OR pos.secId = 'IBM' LIMIT 150",
150);
countStarQueries.put(
"select DISTINCT COUNT(*) from /" + regionName
+ " p, p.positions.values pos where p.ID > 0 OR p.status = 'active' OR pos.secId = 'IBM' ORDER BY p.ID",
200);
}
// Queries without indexes.
/**
* Test on Local Region data
*/
@Test
public void testCountStartQueriesOnLocalRegion() throws Exception {
Cache cache = CacheUtils.getCache();
createLocalRegion();
assertNotNull(cache.getRegion(regionName));
assertEquals(numElem, cache.getRegion(regionName).size());
QueryService queryService = cache.getQueryService();
Query query1 = null;
Query query2 = null;
for (String queryStr : countStarQueries.keySet()) {
query1 = queryService.newQuery(queryStr);
query2 = queryService.newQuery(queryStr.replace("COUNT(*)", "*"));
SelectResults result1 = (SelectResults) query1.execute();
SelectResults result2 = (SelectResults) query2.execute();
assertEquals(queryStr, 1, result1.size());
assertTrue(result1.asList().get(0) instanceof Integer);
int count = ((Integer) result1.asList().get(0)).intValue();
// Also verify with size of result2 to count
assertEquals("COUNT(*) query result is wrong for query: " + queryStr, result2.size(), count);
assertEquals("Query: " + queryStr, countStarQueries.get(queryStr).intValue(), count);
}
}
/**
* Test on Replicated Region data
*/
@Test
public void testCountStarQueriesOnReplicatedRegion() throws Exception {
Cache cache = CacheUtils.getCache();
createReplicatedRegion();
assertNotNull(cache.getRegion(regionName));
assertEquals(numElem, cache.getRegion(regionName).size());
QueryService queryService = cache.getQueryService();
Query query1 = null;
Query query2 = null;
for (String queryStr : countStarQueries.keySet()) {
query1 = queryService.newQuery(queryStr);
query2 = queryService.newQuery(queryStr.replace("COUNT(*)", "*"));
SelectResults result1 = (SelectResults) query1.execute();
SelectResults result2 = (SelectResults) query2.execute();
assertEquals(queryStr, 1, result1.size());
assertTrue(result1.asList().get(0) instanceof Integer);
int count = ((Integer) result1.asList().get(0)).intValue();
// Also verify with size of result2 to count
assertEquals("COUNT(*) query result is wrong for query: " + queryStr, result2.size(), count);
assertEquals("Query: " + queryStr, countStarQueries.get(queryStr).intValue(), count);
}
// Destroy current Region for other tests
cache.getRegion(regionName).destroyRegion();
}
/**
* Test on Partitioned Region data
*/
@Test
public void testCountStarQueriesOnPartitionedRegion() throws Exception {
Cache cache = CacheUtils.getCache();
createPartitionedRegion();
assertNotNull(cache.getRegion(regionName));
assertEquals(numElem, cache.getRegion(regionName).size());
QueryService queryService = cache.getQueryService();
Query query1 = null;
Query query2 = null;
for (String queryStr : countStarQueries.keySet()) {
query1 = queryService.newQuery(queryStr);
query2 = queryService.newQuery(queryStr.replace("COUNT(*)", "*"));
SelectResults result1 = (SelectResults) query1.execute();
SelectResults result2 = (SelectResults) query2.execute();
assertEquals(queryStr, 1, result1.size());
assertTrue(result1.asList().get(0) instanceof Integer);
int count = ((Integer) result1.asList().get(0)).intValue();
// Also verify with size of result2 to count
assertEquals("COUNT(*) query result is wrong for query: " + queryStr, result2.size(), count);
// assertIndexDetailsEquals("Query: "+ queryStr, countStarQueries.get(queryStr).intValue(),
// count);
}
// Destroy current Region for other tests
cache.getRegion(regionName).destroyRegion();
}
// Test with indexes available on region
@Test
public void testCountStartQueriesOnLocalRegionWithIndex() throws Exception {
Cache cache = CacheUtils.getCache();
createLocalRegion();
assertNotNull(cache.getRegion(regionName));
assertEquals(numElem, cache.getRegion(regionName).size());
QueryService queryService = cache.getQueryService();
// CReate Index on status and ID
queryService.createIndex("sampleIndex-1", IndexType.FUNCTIONAL, "p.ID",
"/" + regionName + " p");
queryService.createIndex("sampleIndex-2", IndexType.FUNCTIONAL, "p.status",
"/" + regionName + " p");
queryService.createIndex("sampleIndex-3", IndexType.FUNCTIONAL, "pos.secId",
"/" + regionName + " p, p.positions.values pos");
Region region = cache.getRegion(regionName);
// Verify Index Creation
assertNotNull(queryService.getIndex(region, "sampleIndex-1"));
assertNotNull(queryService.getIndex(region, "sampleIndex-2"));
assertEquals(3, queryService.getIndexes().size());
// Run queries
Query query1 = null;
Query query2 = null;
for (String queryStr : countStarQueries.keySet()) {
query1 = queryService.newQuery(queryStr);
query2 = queryService.newQuery(queryStr.replace("COUNT(*)", "*"));
SelectResults result1 = (SelectResults) query1.execute();
SelectResults result2 = (SelectResults) query2.execute();
assertEquals(queryStr, 1, result1.size());
assertTrue(result1.asList().get(0) instanceof Integer);
int count = ((Integer) result1.asList().get(0)).intValue();
// Also verify with size of result2 to count
assertEquals("COUNT(*) query result is wrong for query: " + queryStr, result2.size(), count);
// assertIndexDetailsEquals("Query: "+ queryStr, countStarQueries.get(queryStr).intValue(),
// count);
}
// Destroy current Region for other tests
region.destroyRegion();
}
@Test
public void testCountStarQueriesOnReplicatedRegionWithIndex() throws Exception {
Cache cache = CacheUtils.getCache();
createReplicatedRegion();
assertNotNull(cache.getRegion(regionName));
assertEquals(numElem, cache.getRegion(regionName).size());
QueryService queryService = cache.getQueryService();
// CReate Index on status and ID
queryService.createIndex("sampleIndex-1", IndexType.FUNCTIONAL, "p.ID",
"/" + regionName + " p");
queryService.createIndex("sampleIndex-2", IndexType.FUNCTIONAL, "p.status",
"/" + regionName + " p");
queryService.createIndex("sampleIndex-3", IndexType.FUNCTIONAL, "pos.secId",
"/" + regionName + " p, p.positions.values pos");
Region region = cache.getRegion(regionName);
// Verify Index Creation
assertNotNull(queryService.getIndex(region, "sampleIndex-1"));
assertNotNull(queryService.getIndex(region, "sampleIndex-2"));
assertEquals(3, queryService.getIndexes().size());
// Run queries
Query query1 = null;
Query query2 = null;
for (String queryStr : countStarQueries.keySet()) {
query1 = queryService.newQuery(queryStr);
query2 = queryService.newQuery(queryStr.replace("COUNT(*)", "*"));
SelectResults result1 = (SelectResults) query1.execute();
SelectResults result2 = (SelectResults) query2.execute();
assertEquals(queryStr, 1, result1.size());
assertTrue(result1.asList().get(0) instanceof Integer);
int count = ((Integer) result1.asList().get(0)).intValue();
// Also verify with size of result2 to count
assertEquals("COUNT(*) query result is wrong for query: " + queryStr, result2.size(), count);
// assertIndexDetailsEquals("Query: "+ queryStr, countStarQueries.get(queryStr).intValue(),
// count);
}
// Destroy current Region for other tests
region.destroyRegion();
}
@Test
public void testCountStarQueriesOnPartitionedRegionWithIndex() throws Exception {
Cache cache = CacheUtils.getCache();
createPartitionedRegion();
assertNotNull(cache.getRegion(regionName));
assertEquals(numElem, cache.getRegion(regionName).size());
QueryService queryService = cache.getQueryService();
// CReate Index on status and ID
queryService.createIndex("sampleIndex-1", IndexType.FUNCTIONAL, "p.ID",
"/" + regionName + " p");
// queryService.createIndex("sampleIndex-2", IndexType.FUNCTIONAL, "p.status", "/"+regionName+ "
// p");
// queryService.createIndex("sampleIndex-3", IndexType.FUNCTIONAL, "pos.secId", "/"+regionName+"
// p, p.positions.values pos");
Region region = cache.getRegion(regionName);
// Verify Index Creation
// assertNotNull(queryService.getIndex(region, "sampleIndex-1"));
// assertNotNull(queryService.getIndex(region, "sampleIndex-2"));
// assertIndexDetailsEquals(3, queryService.getIndexes().size());
// Run queries
Query query1 = null;
Query query2 = null;
for (String queryStr : countStarQueries.keySet()) {
query1 = queryService.newQuery(queryStr);
query2 = queryService.newQuery(queryStr.replace("COUNT(*)", "*"));
SelectResults result1 = (SelectResults) query1.execute();
SelectResults result2 = (SelectResults) query2.execute();
assertEquals(queryStr, 1, result1.size());
assertTrue(result1.asList().get(0) instanceof Integer);
int count = ((Integer) result1.asList().get(0)).intValue();
// Also verify with size of result2 to count
assertEquals("COUNT(*) query result is wrong for query: " + queryStr, result2.size(), count);
// assertIndexDetailsEquals("Query: "+ queryStr, countStarQueries.get(queryStr).intValue(),
// count);
}
// Destroy current Region for other tests
region.destroyRegion();
}
@Test
public void testEquiJoinCountStarQueries() throws Exception {
Cache cache = CacheUtils.getCache();
createLocalRegion();
createSecondLocalRegion();
assertNotNull(cache.getRegion(regionName));
assertNotNull(cache.getRegion(exampleRegionName));
assertEquals(numElem, cache.getRegion(regionName).size());
assertEquals(numElem, cache.getRegion(exampleRegionName).size());
QueryService queryService = cache.getQueryService();
// Run queries
Query query1 = null;
Query query2 = null;
// Without Indexes
for (String queryStr : countStarQueriesWithEquiJoins) {
query1 = queryService.newQuery(queryStr);
query2 = queryService.newQuery(queryStr.replace("COUNT(*)", "*"));
SelectResults result1 = (SelectResults) query1.execute();
SelectResults result2 = (SelectResults) query2.execute();
assertEquals(queryStr, 1, result1.size());
assertTrue(result1.asList().get(0) instanceof Integer);
int count = ((Integer) result1.asList().get(0)).intValue();
// Also verify with size of result2 to count
assertEquals("COUNT(*) query result is wrong for query: " + queryStr, result2.size(), count);
// assertIndexDetailsEquals("Query: "+ queryStr, countStarQueries.get(queryStr).intValue(),
// count);
}
// CReate Index on status and ID
queryService.createIndex("sampleIndex-1", IndexType.FUNCTIONAL, "p.ID",
"/" + regionName + " p");
queryService.createIndex("sampleIndex-2", IndexType.FUNCTIONAL, "p.status",
"/" + regionName + " p");
queryService.createIndex("sampleIndex-3", IndexType.FUNCTIONAL, "e.ID",
"/" + exampleRegionName + " e");
queryService.createIndex("sampleIndex-4", IndexType.FUNCTIONAL, "e.status",
"/" + exampleRegionName + " e");
Region region = cache.getRegion(regionName);
Region region2 = cache.getRegion(exampleRegionName);
// Verify Index Creation
assertNotNull(queryService.getIndex(region, "sampleIndex-1"));
assertNotNull(queryService.getIndex(region, "sampleIndex-2"));
assertNotNull(queryService.getIndex(region2, "sampleIndex-3"));
assertNotNull(queryService.getIndex(region2, "sampleIndex-4"));
assertEquals(4, queryService.getIndexes().size());
// With Indexes
for (String queryStr : countStarQueriesWithEquiJoins) {
query1 = queryService.newQuery(queryStr);
query2 = queryService.newQuery(queryStr.replace("COUNT(*)", "*"));
SelectResults result1 = (SelectResults) query1.execute();
SelectResults result2 = (SelectResults) query2.execute();
assertEquals(queryStr, 1, result1.size());
assertTrue(result1.asList().get(0) instanceof Integer);
int count = ((Integer) result1.asList().get(0)).intValue();
// Also verify with size of result2 to count
assertEquals("COUNT(*) query result is wrong for query with indexes: " + queryStr,
result2.size(), count);
// assertIndexDetailsEquals("Query: "+ queryStr, countStarQueries.get(queryStr).intValue(),
// count);
}
// Destroy current Region for other tests
region.destroyRegion();
region2.destroyRegion();
}
@Test
public void testCountStarOnCollection() throws Exception {
String collection = "$1";
HashMap<String, Integer> countStarQueriesWithParms = new HashMap<String, Integer>();
countStarQueriesWithParms.put("select COUNT(*) from " + collection, 100);
countStarQueriesWithParms.put("select COUNT(*) from " + collection + " where ID > 0", 100);
countStarQueriesWithParms.put("select COUNT(*) from " + collection + " where ID < 0", 0);
countStarQueriesWithParms.put("select COUNT(*) from " + collection + " where ID > 0 LIMIT 50",
50);
countStarQueriesWithParms
.put("select COUNT(*) from " + collection + " where ID > 0 AND status='active'", 50);
countStarQueriesWithParms
.put("select COUNT(*) from " + collection + " where ID > 0 OR status='active'", 100);
countStarQueriesWithParms
.put("select COUNT(*) from " + collection + " where ID > 0 AND status LIKE 'act%'", 50);
countStarQueriesWithParms
.put("select COUNT(*) from " + collection + " where ID > 0 OR status LIKE 'ina%'", 100);
countStarQueriesWithParms
.put("select COUNT(*) from " + collection + " where ID IN SET(1, 2, 3, 4, 5)", 5);
countStarQueriesWithParms.put("select COUNT(*) from " + collection + " where NOT (ID > 5)", 5);
Cache cache = CacheUtils.getCache();
QueryService queryService = cache.getQueryService();
// Run queries
Query query1 = null;
Query query2 = null;
// Create a collection
ArrayList<Portfolio> portfolios = new ArrayList<Portfolio>(100);
for (int i = 1; i <= 100; i++) {
portfolios.add(new Portfolio(i, i));
}
// Without Indexes
for (String queryStr : countStarQueriesWithParms.keySet()) {
query1 = queryService.newQuery(queryStr);
query2 = queryService.newQuery(queryStr.replace("COUNT(*)", "*"));
SelectResults result1 = (SelectResults) query1.execute(new Object[] {portfolios});
SelectResults result2 = (SelectResults) query2.execute(new Object[] {portfolios});
assertEquals(queryStr, 1, result1.size());
assertTrue(result1.asList().get(0) instanceof Integer);
int count = ((Integer) result1.asList().get(0)).intValue();
// Also verify with size of result2 to count
assertEquals("COUNT(*) query result is wrong for query: " + queryStr, result2.size(), count);
assertEquals("Query: " + queryStr, countStarQueriesWithParms.get(queryStr).intValue(), count);
}
}
@Test
public void testCountStarWithDuplicateValues() throws Exception {
Cache cache = CacheUtils.getCache();
createLocalRegion();
assertNotNull(cache.getRegion(regionName));
assertEquals(numElem, cache.getRegion(regionName).size());
HashMap<String, Integer> countStarDistinctQueries = new HashMap<String, Integer>();
countStarDistinctQueries.put("select distinct COUNT(*) from /" + regionName, 100);
countStarDistinctQueries.put("select distinct COUNT(*) from /" + regionName + " where ID > 0",
100);
countStarDistinctQueries.put("select distinct COUNT(*) from /" + regionName + " where ID < 0",
0);
countStarDistinctQueries
.put("select distinct COUNT(*) from /" + regionName + " where ID > 0 LIMIT 50", 50);
countStarDistinctQueries.put(
"select distinct COUNT(*) from /" + regionName + " where ID > 0 AND status='active'", 50);
countStarDistinctQueries.put(
"select distinct COUNT(*) from /" + regionName + " where ID > 0 OR status='active'", 100);
countStarDistinctQueries.put(
"select distinct COUNT(*) from /" + regionName + " where ID > 0 AND status LIKE 'act%'",
50);
countStarDistinctQueries.put(
"select distinct COUNT(*) from /" + regionName + " where ID > 0 OR status LIKE 'ina%'",
100);
countStarDistinctQueries
.put("select distinct COUNT(*) from /" + regionName + " where ID IN SET(1, 2, 3, 4, 5)", 5);
countStarDistinctQueries
.put("select distinct COUNT(*) from /" + regionName + " where NOT (ID > 5)", 5);
QueryService queryService = cache.getQueryService();
// Run queries
Query query1 = null;
Query query2 = null;
// Populate the region.
Region region = cache.getRegion(regionName);
for (int i = 1; i <= 100; i++) {
region.put(i, new Portfolio(i, i));
}
// Duplicate values
for (int i = 1; i <= 100; i++) {
region.put(i + 100, new Portfolio(i, i));
}
// Without Indexes
for (String queryStr : countStarDistinctQueries.keySet()) {
query1 = queryService.newQuery(queryStr);
query2 = queryService.newQuery(queryStr.replace("COUNT(*)", "*"));
SelectResults result1 = (SelectResults) query1.execute();
SelectResults result2 = (SelectResults) query2.execute();
assertEquals(queryStr, 1, result1.size());
assertTrue(result1.asList().get(0) instanceof Integer);
int count = ((Integer) result1.asList().get(0)).intValue();
// Also verify with size of result2 to count
assertEquals("COUNT(*) query result is wrong for query: " + queryStr, result2.size(), count);
// assertIndexDetailsEquals("Query: "+ queryStr,
// countStarDistinctQueries.get(queryStr).intValue(), count);
}
// CReate Index on status and ID
queryService.createIndex("sampleIndex-1", IndexType.FUNCTIONAL, "p.ID",
"/" + regionName + " p");
queryService.createIndex("sampleIndex-2", IndexType.FUNCTIONAL, "p.status",
"/" + regionName + " p");
queryService.createIndex("sampleIndex-3", IndexType.FUNCTIONAL, "pos.secId",
"/" + regionName + " p, p.positions.values pos");
// Verify Index Creation
assertNotNull(queryService.getIndex(region, "sampleIndex-1"));
assertNotNull(queryService.getIndex(region, "sampleIndex-2"));
assertEquals(3, queryService.getIndexes().size());
// Without Indexes
for (String queryStr : countStarDistinctQueries.keySet()) {
query1 = queryService.newQuery(queryStr);
query2 = queryService.newQuery(queryStr.replace("COUNT(*)", "*"));
SelectResults result1 = (SelectResults) query1.execute();
SelectResults result2 = (SelectResults) query2.execute();
assertEquals(queryStr, 1, result1.size());
assertTrue(result1.asList().get(0) instanceof Integer);
int count = ((Integer) result1.asList().get(0)).intValue();
// Also verify with size of result2 to count
assertEquals("COUNT(*) query result is wrong for query: " + queryStr, result2.size(), count);
// assertIndexDetailsEquals("Query: "+ queryStr,
// countStarDistinctQueries.get(queryStr).intValue(), count);
}
}
private void createLocalRegion() {
Cache cache = CacheUtils.getCache();
AttributesFactory attributesFactory = new AttributesFactory();
attributesFactory.setDataPolicy(DataPolicy.NORMAL);
RegionAttributes regionAttributes = attributesFactory.create();
Region region = cache.createRegion(regionName, regionAttributes);
for (int i = 1; i <= numElem; i++) {
Portfolio obj = new Portfolio(i);
region.put(i, obj);
CacheUtils.log(obj);
}
}
private void createSecondLocalRegion() {
Cache cache = CacheUtils.getCache();
AttributesFactory attributesFactory = new AttributesFactory();
attributesFactory.setDataPolicy(DataPolicy.NORMAL);
RegionAttributes regionAttributes = attributesFactory.create();
Region region = cache.createRegion(exampleRegionName, regionAttributes);
for (int i = 1; i <= numElem; i++) {
Portfolio obj = new Portfolio(i);
region.put(i, obj);
CacheUtils.log(obj);
}
}
private void createPartitionedRegion() {
Cache cache = CacheUtils.getCache();
PartitionAttributesFactory prAttFactory = new PartitionAttributesFactory();
AttributesFactory attributesFactory = new AttributesFactory();
attributesFactory.setPartitionAttributes(prAttFactory.create());
RegionAttributes regionAttributes = attributesFactory.create();
Region region = cache.createRegion(regionName, regionAttributes);
for (int i = 1; i <= numElem; i++) {
Portfolio obj = new Portfolio(i);
region.put(i, obj);
CacheUtils.log(obj);
}
}
private void createReplicatedRegion() {
Cache cache = CacheUtils.getCache();
AttributesFactory attributesFactory = new AttributesFactory();
attributesFactory.setDataPolicy(DataPolicy.REPLICATE);
RegionAttributes regionAttributes = attributesFactory.create();
Region region = cache.createRegion(regionName, regionAttributes);
for (int i = 1; i <= numElem; i++) {
Portfolio obj = new Portfolio(i);
region.put(i, obj);
CacheUtils.log(obj);
}
}
}