use of org.apache.geode.cache.Region in project geode by apache.
the class CqQueryDUnitTest method performGC.
private void performGC(VM server, final String regionName) {
SerializableRunnable task = new CacheSerializableRunnable("perform GC") {
public void run2() throws CacheException {
Region subregion = getCache().getRegion("root/" + regionName);
DistributedTombstoneOperation gc = DistributedTombstoneOperation.gc((DistributedRegion) subregion, new EventID(getCache().getDistributedSystem()));
gc.distribute();
}
};
server.invoke(task);
}
use of org.apache.geode.cache.Region in project geode by apache.
the class CqQueryDUnitTest method testRegionDestroy.
/**
* This will test the events after region destory. The CQs on the destroy region needs to be
* closed.
*
*/
@Test
public void testRegionDestroy() throws Exception {
final Host host = Host.getHost(0);
VM server = host.getVM(0);
VM client = host.getVM(1);
/* Init Server and Client */
createServer(server);
final int thePort = server.invoke(() -> CqQueryDUnitTest.getCacheServerPort());
final String host0 = NetworkUtils.getServerHostName(server.getHost());
createClient(client, thePort, host0);
/* Create CQs. */
createCQ(client, "testRegionDestroy_0", cqs[0]);
createCQ(client, "testRegionDestroy_1", cqs[0]);
createCQ(client, "testRegionDestroy_2", cqs[0]);
executeCQ(client, "testRegionDestroy_0", false, null);
executeCQ(client, "testRegionDestroy_1", false, null);
executeCQ(client, "testRegionDestroy_2", false, null);
/* Init values at server. */
final int size = 10;
registerInterestListCQ(client, regions[0], size);
createValues(server, regions[0], size);
// Wait for client to Synch.
waitForCreated(client, "testRegionDestroy_0", KEY + 10);
// validate CQs.
validateCQ(client, "testRegionDestroy_0", /* resultSize: */
noTest, /* creates: */
size, /* updates: */
noTest, /* deletes; */
noTest, /* queryInserts: */
size, /* queryUpdates: */
0, /* queryDeletes: */
0, /* totalEvents: */
size);
// Validate InterestList.
// CREATE
client.invoke(new CacheSerializableRunnable("validate updates") {
public void run2() throws CacheException {
Region region = getRootRegion().getSubregion(regions[0]);
assertNotNull(region);
Set keys = region.entrySet();
assertEquals("Mismatch, number of keys in local region is not equal to the interest list size", size, keys.size());
CertifiableTestCacheListener ctl = (CertifiableTestCacheListener) region.getAttributes().getCacheListener();
for (int i = 1; i <= 10; i++) {
ctl.waitForCreated(KEY + i);
assertNotNull(region.getEntry(KEY + i));
}
}
});
// Destroy Region.
server.invoke(new CacheSerializableRunnable("Destroy Region") {
public void run2() throws CacheException {
Region region1 = getRootRegion().getSubregion(regions[0]);
region1.destroyRegion();
}
});
Wait.pause(4 * 1000);
validateCQCount(client, 0);
closeClient(client);
closeServer(server);
}
use of org.apache.geode.cache.Region in project geode by apache.
the class CqQueryDUnitTest method testInterestListAndCQs.
/**
* Test for InterestList and CQ registered from same clients.
*
* @throws Exception
*/
@Test
public void testInterestListAndCQs() throws Exception {
final Host host = Host.getHost(0);
VM server = host.getVM(0);
VM client = host.getVM(1);
/* Init Server and Client */
createServer(server);
final int thePort = server.invoke(() -> CqQueryDUnitTest.getCacheServerPort());
final String host0 = NetworkUtils.getServerHostName(server.getHost());
createClient(client, thePort, host0);
/* Create CQs. */
createCQ(client, "testInterestListAndCQs_0", cqs[0]);
validateCQCount(client, 1);
/* Init values at server. */
final int size = 10;
executeCQ(client, "testInterestListAndCQs_0", false, null);
registerInterestListCQ(client, regions[0], size);
createValues(server, regions[0], size);
for (int i = 1; i <= 10; i++) {
waitForCreated(client, "testInterestListAndCQs_0", KEY + i);
}
// validate CQs.
validateCQ(client, "testInterestListAndCQs_0", /* resultSize: */
noTest, /* creates: */
size, /* updates: */
noTest, /* deletes; */
noTest, /* queryInserts: */
size, /* queryUpdates: */
0, /* queryDeletes: */
0, /* totalEvents: */
size);
// Validate InterestList.
// CREATE
client.invoke(new CacheSerializableRunnable("validate updates") {
public void run2() throws CacheException {
Region region = getRootRegion().getSubregion(regions[0]);
assertNotNull(region);
Set keys = region.entrySet();
assertEquals("Mismatch, number of keys in local region is not equal to the interest list size", size, keys.size());
CertifiableTestCacheListener ctl = (CertifiableTestCacheListener) region.getAttributes().getCacheListener();
for (int i = 1; i <= 10; i++) {
ctl.waitForCreated(KEY + i);
assertNotNull(region.getEntry(KEY + i));
}
}
});
// UPDATE
createValues(server, regions[0], size);
// Wait for client to Synch.
for (int i = 1; i <= 10; i++) {
waitForUpdated(client, "testInterestListAndCQs_0", KEY + i);
}
client.invoke(new CacheSerializableRunnable("validate updates") {
public void run2() throws CacheException {
Region region = getRootRegion().getSubregion(regions[0]);
assertNotNull(region);
Set keys = region.entrySet();
assertEquals("Mismatch, number of keys in local region is not equal to the interest list size", size, keys.size());
CertifiableTestCacheListener ctl = (CertifiableTestCacheListener) region.getAttributes().getCacheListener();
for (int i = 1; i <= 10; i++) {
ctl.waitForUpdated(KEY + i);
assertNotNull(region.getEntry(KEY + i));
}
}
});
// INVALIDATE
server.invoke(new CacheSerializableRunnable("Invalidate values") {
public void run2() throws CacheException {
Region region1 = getRootRegion().getSubregion(regions[0]);
for (int i = 1; i <= size; i++) {
region1.invalidate(KEY + i);
}
}
});
waitForInvalidated(client, "testInterestListAndCQs_0", KEY + 10);
client.invoke(new CacheSerializableRunnable("validate invalidates") {
public void run2() throws CacheException {
Region region = getRootRegion().getSubregion(regions[0]);
assertNotNull(region);
Set keys = region.entrySet();
assertEquals("Mismatch, number of keys in local region is not equal to the interest list size", size, keys.size());
CertifiableTestCacheListener ctl = (CertifiableTestCacheListener) region.getAttributes().getCacheListener();
for (int i = 1; i <= 10; i++) {
ctl.waitForInvalidated(KEY + i);
assertNotNull(region.getEntry(KEY + i));
}
}
});
validateCQ(client, "testInterestListAndCQs_0", /* resultSize: */
noTest, /* creates: */
size, /* updates: */
size, /* deletes; */
noTest, /* queryInserts: */
size, /* queryUpdates: */
size, /* queryDeletes: */
size, /* totalEvents: */
size * 3);
// DESTROY - this should not have any effect on CQ, as the events are
// already destroyed from invalidate events.
server.invoke(new CacheSerializableRunnable("Invalidate values") {
public void run2() throws CacheException {
Region region1 = getRootRegion().getSubregion(regions[0]);
for (int i = 1; i <= size; i++) {
region1.destroy(KEY + i);
}
}
});
// Wait for destroyed.
client.invoke(new CacheSerializableRunnable("validate destroys") {
public void run2() throws CacheException {
Region region = getRootRegion().getSubregion(regions[0]);
assertNotNull(region);
CertifiableTestCacheListener ctl = (CertifiableTestCacheListener) region.getAttributes().getCacheListener();
for (int i = 1; i <= 10; i++) {
ctl.waitForDestroyed(KEY + i);
}
}
});
validateCQ(client, "testInterestListAndCQs_0", /* resultSize: */
noTest, /* creates: */
size, /* updates: */
size, /* deletes; */
noTest, /* queryInserts: */
size, /* queryUpdates: */
size, /* queryDeletes: */
size, /* totalEvents: */
size * 3);
closeClient(client);
closeServer(server);
}
use of org.apache.geode.cache.Region in project geode by apache.
the class CqQueryOptimizedExecuteDUnitTest method testCqExecuteWithoutQueryExecutionAndNoRSCaching.
@Test
public void testCqExecuteWithoutQueryExecutionAndNoRSCaching() throws Exception {
final Host host = Host.getHost(0);
final VM server = host.getVM(0);
final VM client = host.getVM(1);
final int numOfEntries = 10;
final String cqName = "testCqExecuteWithoutQueryExecution_1";
server.invoke(new CacheSerializableRunnable("execute cq") {
public void run2() throws CacheException {
CqServiceProvider.MAINTAIN_KEYS = false;
}
});
createServer(server);
// Create values.
createValues(server, regions[0], numOfEntries);
final int thePort = server.invoke(() -> CqQueryDUnitTest.getCacheServerPort());
final String host0 = NetworkUtils.getServerHostName(server.getHost());
// Create client.
createClient(client, thePort, host0);
/* Create CQs. */
createCQ(client, cqName, cqs[0]);
validateCQCount(client, 1);
executeCQ(client, cqName, false, null);
server.invoke(new CacheSerializableRunnable("execute cq") {
public void run2() throws CacheException {
assertFalse("CqServiceImpl.EXECUTE_QUERY_DURING_INIT flag should be false ", CqServiceImpl.EXECUTE_QUERY_DURING_INIT);
assertFalse(DistributionConfig.GEMFIRE_PREFIX + "cq.MAINTAIN_KEYS flag should be false ", CqServiceProvider.MAINTAIN_KEYS);
int numOfQueryExecutions = (Integer) ((GemFireCacheImpl) getCache()).getCachePerfStats().getStats().get("queryExecutions");
assertEquals("Number of query executions for cq.execute should be 0 ", 0, numOfQueryExecutions);
}
});
// Create more values.
server.invoke(new CacheSerializableRunnable("Create values") {
public void run2() throws CacheException {
Region region1 = getRootRegion().getSubregion(regions[0]);
for (int i = numOfEntries + 1; i <= numOfEntries * 2; i++) {
region1.put(KEY + i, new Portfolio(i));
}
LogWriterUtils.getLogWriter().info("### Number of Entries in Region :" + region1.keySet().size());
}
});
waitForCreated(client, cqName, KEY + numOfEntries * 2);
validateCQ(client, cqName, /* resultSize: */
noTest, /* creates: */
numOfEntries, /* updates: */
0, /* deletes; */
0, /* queryInserts: */
numOfEntries, /* queryUpdates: */
0, /* queryDeletes: */
0, /* totalEvents: */
numOfEntries);
// Update values.
createValues(server, regions[0], 5);
createValues(server, regions[0], 10);
waitForUpdated(client, cqName, KEY + numOfEntries);
// validate Update events.
validateCQ(client, cqName, /* resultSize: */
noTest, /* creates: */
numOfEntries, /* updates: */
15, /* deletes; */
0, /* queryInserts: */
numOfEntries, /* queryUpdates: */
15, /* queryDeletes: */
0, /* totalEvents: */
numOfEntries + 15);
// Validate delete events.
deleteValues(server, regions[0], 5);
waitForDestroyed(client, cqName, KEY + 5);
validateCQ(client, cqName, /* resultSize: */
noTest, /* creates: */
numOfEntries, /* updates: */
15, /* deletes; */
5, /* queryInserts: */
numOfEntries, /* queryUpdates: */
15, /* queryDeletes: */
5, /* totalEvents: */
numOfEntries + 15 + 5);
closeClient(client);
closeServer(server);
}
use of org.apache.geode.cache.Region in project geode by apache.
the class CqQueryOptimizedExecuteDUnitTest method testCqExecuteWithoutQueryExecution.
@Test
public void testCqExecuteWithoutQueryExecution() throws Exception {
final Host host = Host.getHost(0);
final VM server = host.getVM(0);
final VM client = host.getVM(1);
final int numOfEntries = 10;
final String cqName = "testCqExecuteWithoutQueryExecution_1";
createServer(server);
// Create values.
createValues(server, regions[0], numOfEntries);
final int thePort = server.invoke(() -> CqQueryDUnitTest.getCacheServerPort());
final String host0 = NetworkUtils.getServerHostName(server.getHost());
// Create client.
createClient(client, thePort, host0);
/* Create CQs. */
createCQ(client, cqName, cqs[0]);
validateCQCount(client, 1);
executeCQ(client, cqName, false, null);
server.invoke(new CacheSerializableRunnable("execute cq") {
public void run2() throws CacheException {
assertFalse("CqServiceImpl.EXECUTE_QUERY_DURING_INIT flag should be false ", CqServiceImpl.EXECUTE_QUERY_DURING_INIT);
int numOfQueryExecutions = (Integer) ((GemFireCacheImpl) getCache()).getCachePerfStats().getStats().get("queryExecutions");
assertEquals("Number of query executions for cq.execute should be 0 ", 0, numOfQueryExecutions);
}
});
// Create more values.
server.invoke(new CacheSerializableRunnable("Create values") {
public void run2() throws CacheException {
Region region1 = getRootRegion().getSubregion(regions[0]);
for (int i = numOfEntries + 1; i <= numOfEntries * 2; i++) {
region1.put(KEY + i, new Portfolio(i));
}
LogWriterUtils.getLogWriter().info("### Number of Entries in Region :" + region1.keySet().size());
}
});
waitForCreated(client, cqName, KEY + numOfEntries * 2);
validateCQ(client, cqName, /* resultSize: */
noTest, /* creates: */
numOfEntries, /* updates: */
0, /* deletes; */
0, /* queryInserts: */
numOfEntries, /* queryUpdates: */
0, /* queryDeletes: */
0, /* totalEvents: */
numOfEntries);
// Update values.
createValues(server, regions[0], 5);
createValues(server, regions[0], 10);
waitForUpdated(client, cqName, KEY + numOfEntries);
// validate Update events.
validateCQ(client, cqName, /* resultSize: */
noTest, /* creates: */
numOfEntries, /* updates: */
15, /* deletes; */
0, /* queryInserts: */
numOfEntries, /* queryUpdates: */
15, /* queryDeletes: */
0, /* totalEvents: */
numOfEntries + 15);
// Validate delete events.
deleteValues(server, regions[0], 5);
waitForDestroyed(client, cqName, KEY + 5);
validateCQ(client, cqName, /* resultSize: */
noTest, /* creates: */
numOfEntries, /* updates: */
15, /* deletes; */
5, /* queryInserts: */
numOfEntries, /* queryUpdates: */
15, /* queryDeletes: */
5, /* totalEvents: */
numOfEntries + 15 + 5);
closeClient(client);
closeServer(server);
}
Aggregations