use of org.apache.geode.cache.query.data.PortfolioData in project geode by apache.
the class PRBasicMultiIndexCreationDUnitTest method testCreatePartitionedIndexWithKeysValuesAndFunction.
/**
* Creats partitioned index on keys and values of a bucket regions.
*/
@Test
public void testCreatePartitionedIndexWithKeysValuesAndFunction() throws Exception {
Host host = Host.getHost(0);
VM vm0 = host.getVM(0);
VM vm1 = host.getVM(1);
setCacheInVMs(vm0, vm1);
final String fileName = "PRIndexCreation.xml";
LogWriterUtils.getLogWriter().info("PRBasicIndexCreation.testCreatePartitionedIndexThroughXML started");
LogWriterUtils.getLogWriter().info("Starting and initializing partitioned regions and indexes using xml");
LogWriterUtils.getLogWriter().info("Starting a pr asynchronously using an xml file name : " + fileName);
vm0.invoke(PRQHelp.getCacheSerializableRunnableForPRCreate(name, redundancy, PortfolioData.class));
final PortfolioData[] portfolio = createPortfolioData(cnt, cntDest);
vm1.invoke(PRQHelp.getCacheSerializableRunnableForPRCreate(name, redundancy, PortfolioData.class));
vm0.invoke(PRQHelp.getCacheSerializableRunnableForPRPuts(name, portfolio, cnt, cntDest));
ArrayList<String> names = new ArrayList<String>();
names.add("index8");
names.add("index7");
ArrayList<String> exps = new ArrayList<String>();
exps.add("k");
exps.add("nvl(k.status.toString(),'nopes')");
ArrayList<String> fromClause = new ArrayList<String>();
fromClause.add("/PartionedPortfolios.keys k");
fromClause.add("/PartionedPortfolios.values k");
vm1.invoke(PRQHelp.getCacheSerializableRunnableForDefineIndex(name, names, exps, fromClause));
vm0.invoke(PRQHelp.getCacheSerializableRunnableForPRPuts(name, portfolio, cnt, cntDest));
LogWriterUtils.getLogWriter().info("PRBasicIndexCreation.testCreatePartitionedIndexThroughXML is done ");
}
use of org.apache.geode.cache.query.data.PortfolioData in project geode by apache.
the class PRBasicMultiIndexCreationDUnitTest method testCreateIndexFromAccessor.
/**
* Bug Fix 37201, creating index from a data accessor.
*/
@Test
public void testCreateIndexFromAccessor() throws Exception {
Host host = Host.getHost(0);
VM vm0 = host.getVM(0);
VM vm1 = host.getVM(1);
VM vm2 = host.getVM(2);
VM vm3 = host.getVM(3);
setCacheInVMs(vm0, vm1, vm2, vm3);
vm0.invoke(PRQHelp.getCacheSerializableRunnableForPRAccessorCreate(name, redundancy, PortfolioData.class));
// create more vms to host data.
vm1.invoke(PRQHelp.getCacheSerializableRunnableForPRCreate(name, redundancy, PortfolioData.class));
vm2.invoke(PRQHelp.getCacheSerializableRunnableForPRCreate(name, redundancy, PortfolioData.class));
vm3.invoke(PRQHelp.getCacheSerializableRunnableForPRCreate(name, redundancy, PortfolioData.class));
final PortfolioData[] portfolio = createPortfolioData(cnt, cntDest);
// Putting the data into the PR's created
vm2.invoke(PRQHelp.getCacheSerializableRunnableForPRPuts(name, portfolio, cnt, cntDest));
// create the index form asscessor.
ArrayList<String> names = new ArrayList<String>();
names.add("PrIndexOnID");
ArrayList<String> exps = new ArrayList<String>();
exps.add("ID");
vm0.invoke(PRQHelp.getCacheSerializableRunnableForDefineIndex(name, names, exps));
}
use of org.apache.geode.cache.query.data.PortfolioData in project geode by apache.
the class PRBasicMultiIndexCreationDUnitTest method testPartitionedIndexUsageWithPRQuery.
/**
* Test index usage with query on a partitioned region with bucket indexes.
*/
@Test
public void testPartitionedIndexUsageWithPRQuery() throws Exception {
Host host = Host.getHost(0);
VM vm0 = host.getVM(0);
VM vm1 = host.getVM(1);
VM vm2 = host.getVM(2);
VM vm3 = host.getVM(3);
setCacheInVMs(vm0, vm1, vm2, vm3);
LogWriterUtils.getLogWriter().info("PRBasicIndexCreationDUnitTest.testPartitionedIndexUsageWithPRQuery started ");
vm0.invoke(PRQHelp.getCacheSerializableRunnableForPRCreate(name, redundancy, PortfolioData.class));
vm1.invoke(PRQHelp.getCacheSerializableRunnableForPRCreate(name, redundancy, PortfolioData.class));
vm2.invoke(PRQHelp.getCacheSerializableRunnableForPRCreate(name, redundancy, PortfolioData.class));
vm3.invoke(PRQHelp.getCacheSerializableRunnableForPRCreate(name, redundancy, PortfolioData.class));
ArrayList<String> names = new ArrayList<String>();
names.add("PrIndexOnID");
ArrayList<String> exps = new ArrayList<String>();
exps.add("ID");
vm0.invoke(PRQHelp.getCacheSerializableRunnableForDefineIndex(name, names, exps));
final PortfolioData[] portfolio = createPortfolioData(cnt, cntDest);
vm0.invoke(PRQHelp.getCacheSerializableRunnableForPRPuts(name, portfolio, cnt, cntDest));
vm0.invoke(PRQHelp.getCacheSerializableRunnableForLocalRegionCreation(localName, PortfolioData.class));
vm0.invoke(PRQHelp.getCacheSerializableRunnableForPRPuts(localName, portfolio, cnt, cntDest));
vm0.invoke(PRQHelp.getCacheSerializableRunnableForPRQueryAndCompareResults(name, localName));
// validation on index usage with queries over a pr
vm0.invoke(PRQHelp.getCacheSerializableRunnableForIndexUsageCheck());
vm1.invoke(PRQHelp.getCacheSerializableRunnableForIndexUsageCheck());
vm2.invoke(PRQHelp.getCacheSerializableRunnableForIndexUsageCheck());
vm3.invoke(PRQHelp.getCacheSerializableRunnableForIndexUsageCheck());
LogWriterUtils.getLogWriter().info("PRBasicIndexCreationDUnitTest.testPartitionedIndexUsageWithPRQuery done ");
}
use of org.apache.geode.cache.query.data.PortfolioData in project geode by apache.
the class PRBasicMultiIndexCreationDUnitTest method testPartitionedIndexCreationDuringPersistentRecovery.
/**
* Test index usage with query on a partitioned region with bucket indexes.
*
* @throws Throwable
*/
@Test
public void testPartitionedIndexCreationDuringPersistentRecovery() throws Throwable {
Host host = Host.getHost(0);
VM vm0 = host.getVM(0);
VM vm1 = host.getVM(1);
setCacheInVMs(vm0, vm1);
int redundancy = 1;
LogWriterUtils.getLogWriter().info("PRBasicIndexCreationDUnitTest.testPartitionedIndexCreationDuringPersistentRecovery started ");
vm0.invoke(PRQHelp.getCacheSerializableRunnableForPersistentPRCreate(name, redundancy, PortfolioData.class));
vm1.invoke(PRQHelp.getCacheSerializableRunnableForPersistentPRCreate(name, redundancy, PortfolioData.class));
final PortfolioData[] portfolio = createPortfolioData(cnt, cntDest);
vm0.invoke(PRQHelp.getCacheSerializableRunnableForPRPuts(name, portfolio, cnt, cntDest));
// Restart a single member
vm0.invoke(PRQHelp.getCacheSerializableRunnableForCloseCache());
setCacheInVMs(vm0);
AsyncInvocation regionCreateFuture = vm0.invokeAsync(PRQHelp.getCacheSerializableRunnableForPersistentPRCreate(name, redundancy, PortfolioData.class));
// Ok, I want to do this in parallel
ArrayList<String> names = new ArrayList<String>();
names.add("PrIndexOnID");
ArrayList<String> exps = new ArrayList<String>();
exps.add("ID");
AsyncInvocation indexCreateFuture = vm1.invokeAsync(PRQHelp.getCacheSerializableRunnableForDefineIndex(name, names, exps));
regionCreateFuture.getResult(20 * 1000);
indexCreateFuture.getResult(20 * 1000);
vm0.invoke(PRQHelp.getCacheSerializableRunnableForLocalRegionCreation(localName, PortfolioData.class));
vm0.invoke(PRQHelp.getCacheSerializableRunnableForPRPuts(localName, portfolio, cnt, cntDest));
vm0.invoke(PRQHelp.getCacheSerializableRunnableForPRQueryAndCompareResults(name, localName));
// validation on index usage with queries over a pr
// The indexes may not have been completely created yet, because the buckets
// may still be recovering from disk.
LogWriterUtils.getLogWriter().info("PRBasicIndexCreationDUnitTest.testPartitionedIndexCreationDuringPersistentRecovery done ");
}
use of org.apache.geode.cache.query.data.PortfolioData in project geode by apache.
the class PRBasicQueryDUnitTest method testColocatedPRQueryDuringRecoveryWithMissingColocatedChild.
/**
* A basic dunit test that <br>
* 1. Creates a PR and colocated child region Accessor and Data Store with redundantCopies = 0. 2.
* Populates the region with test data. 3. Fires a query on accessor VM and verifies the result.
* 4. Shuts down the caches, then restarts them asynchronously, but don't restart the child region
* 5. Attempt the query while the region offline because of the missing child region
*
* @throws Exception
*/
@SuppressWarnings("rawtypes")
@Test
public void testColocatedPRQueryDuringRecoveryWithMissingColocatedChild() throws Exception {
Host host = Host.getHost(0);
VM vm0 = host.getVM(0);
VM vm1 = host.getVM(1);
setCacheInVMs(vm0, vm1);
LogWriterUtils.getLogWriter().info("PRQBasicQueryDUnitTest#testColocatedPRBasicQuerying: Querying PR Test with DACK Started");
// Creting PR's on the participating VM's
// Creating Accessor node on the VM0.
LogWriterUtils.getLogWriter().info("PRQBasicQueryDUnitTest#testColocatedPRBasicQuerying: Creating the Accessor node in the PR");
vm0.invoke(PRQHelp.getCacheSerializableRunnableForColocatedPRCreate(name, redundancy, PortfolioData.class, true));
// Creating local region on vm0 to compare the results of query.
vm0.invoke(PRQHelp.getCacheSerializableRunnableForLocalRegionCreation(localName, PortfolioData.class));
LogWriterUtils.getLogWriter().info("PRQBasicQueryDUnitTest#testColocatedPRBasicQuerying: Successfully created the Accessor node in the PR");
// Creating the Datastores Nodes in the VM1.
LogWriterUtils.getLogWriter().info("PRQBasicQueryDUnitTest:testColocatedPRBasicQuerying ----- Creating the Datastore node in the PR");
vm1.invoke(PRQHelp.getCacheSerializableRunnableForColocatedPRCreate(name, redundancy, PortfolioData.class, true));
LogWriterUtils.getLogWriter().info("PRQBasicQueryDUnitTest#testColocatedPRBasicQuerying: Successfully Created the Datastore node in the PR");
LogWriterUtils.getLogWriter().info("PRQBasicQueryDUnitTest#testColocatedPRBasicQuerying: Successfully Created PR's across all VM's");
// Generating portfolio object array to be populated across the PR's & Local
// Regions
final PortfolioData[] portfolio = createPortfolioData(cnt, cntDest);
// Putting the data into the PR's created
vm0.invoke(PRQHelp.getCacheSerializableRunnableForPRPuts(name, portfolio, cnt, cntDest));
vm0.invoke(PRQHelp.getCacheSerializableRunnableForPRDuplicatePuts(name, portfolio, cnt, cntDest));
LogWriterUtils.getLogWriter().info("PRQBasicQueryDUnitTest#testColocatedPRBasicQuerying: Inserted Portfolio data across PR's");
vm0.invoke(PRQHelp.getCacheSerializableRunnableForPRPuts(localName, portfolio, cnt, cntDest));
vm0.invoke(PRQHelp.getCacheSerializableRunnableForPRDuplicatePuts(localName, portfolio, cnt, cntDest));
// querying the VM for data and comparing the result with query result of
// local region.
// querying the VM for data
vm0.invoke(PRQHelp.getCacheSerializableRunnableForPRQueryAndCompareResults(name, localName));
LogWriterUtils.getLogWriter().info("PRQBasicQueryDUnitTest#testColocatedPRBasicQuerying: Querying PR's 1st pass ENDED");
// Shut everything down and then restart to test queries during recovery
vm0.invoke(PRQHelp.getCacheSerializableRunnableForCloseCache());
vm1.invoke(PRQHelp.getCacheSerializableRunnableForCloseCache());
// Re-create the only the parent region
setCacheInVMs(vm0, vm1);
LogWriterUtils.getLogWriter().info("PRQBasicQueryDUnitTest#testColocatedPRBasicQuerying: Creating the Accessor node in the PR");
vm0.invoke(PRQHelp.getCacheSerializableRunnableForColocatedParentCreate(name, redundancy, PortfolioData.class, true));
// Creating local region on vm0 to compare the results of query.
vm0.invoke(PRQHelp.getCacheSerializableRunnableForLocalRegionCreation(localName, PortfolioData.class));
LogWriterUtils.getLogWriter().info("PRQBasicQueryDUnitTest#testColocatedPRBasicQuerying: Successfully created the Accessor node in the PR");
LogWriterUtils.getLogWriter().info("PRQBasicQueryDUnitTest:testColocatedPRBasicQuerying ----- re-creating the Datastore node in the PR");
vm1.invoke(PRQHelp.getCacheSerializableRunnableForColocatedParentCreate(name, redundancy, PortfolioData.class, true));
try {
// This is a repeat of the original query from before closing and restarting the datastores.
// This time
// it should fail due to persistent recovery that has not completed.
vm0.invoke(PRQHelp.getCacheSerializableRunnableForPRQueryAndCompareResults(name, localName, true));
fail("Expected PartitionOfflineException when queryiong a region with offline colocated child");
} catch (Exception e) {
if (!(e.getCause() instanceof PartitionOfflineException)) {
throw e;
}
}
LogWriterUtils.getLogWriter().info("PRQBasicQueryDUnitTest#testColocatedPRBasicQuerying: Querying PR's 2nd pass (after restarting regions) ENDED");
}
Aggregations