use of org.apache.geode.cache.query.RegionNotFoundException in project geode by apache.
the class CqQueryDUnitTest method testCQCreateClose.
/**
* Test for CQ register and UnRegister.
*
* @throws Exception
*/
@Test
public void testCQCreateClose() 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);
/* debug */
// getLogWriter().info("### DEBUG STOP ####");
// pause(60 * 1000);
// getLogWriter().info("### DEBUG START ####");
/* Create CQs. */
createCQ(client, "testCQCreateClose_0", cqs[0]);
validateCQCount(client, 1);
executeCQ(client, "testCQCreateClose_0", false, null);
/* Init values at server. */
int size = 10;
createValues(server, regions[0], size);
// Wait for client to Synch.
waitForCreated(client, "testCQCreateClose_0", KEY + size);
// Check if Client and Server in sync.
// validateServerClientRegionEntries(server, client, regions[0]);
validateQuery(server, cqs[0], 10);
// validate CQs.
validateCQ(client, "testCQCreateClose_0", /* resultSize: */
noTest, /* creates: */
size, /* updates: */
0, /* deletes; */
0, /* queryInserts: */
size, /* queryUpdates: */
0, /* queryDeletes: */
0, /* totalEvents: */
size);
// Test CQ stop
stopCQ(client, "testCQCreateClose_0");
// Test CQ re-enable
executeCQ(client, "testCQCreateClose_0", false, null);
// Test CQ Close
closeCQ(client, "testCQCreateClose_0");
// Create CQs with no name, execute, and close.
createAndExecCQNoName(client, cqs[0]);
// Accessing the closed CQ.
failIfCQExists(client, "testCQCreateClose_0");
// re-Create the cq which is closed.
createCQ(client, "testCQCreateClose_0", cqs[0]);
/* Test CQ Count */
validateCQCount(client, 1);
// Registering CQ with same name from same client.
try {
createCQ(client, "testCQCreateClose_0", cqs[0]);
fail("Trying to create CQ with same name. Should have thrown CQExistsException");
} catch (org.apache.geode.test.dunit.RMIException rmiExc) {
Throwable cause = rmiExc.getCause();
assertTrue("unexpected cause: " + cause.getClass().getName(), cause instanceof AssertionError);
// should be a CQExistsException
Throwable causeCause = cause.getCause();
assertTrue("Got wrong exception: " + causeCause.getClass().getName(), causeCause instanceof CqExistsException);
}
// Getting values from non-existent CQ.
failIfCQExists(client, "testCQCreateClose_NO");
// Server Registering CQ.
try {
createCQ(server, "testCQCreateClose_1", cqs[0]);
fail("Trying to create CQ on Cache Server. Should have thrown Exception.");
} catch (org.apache.geode.test.dunit.RMIException rmiExc) {
Throwable cause = rmiExc.getCause();
assertTrue("unexpected cause: " + cause.getClass().getName(), cause instanceof AssertionError);
// should be a IllegalStateException
Throwable causeCause = cause.getCause();
assertTrue("Got wrong exception: " + causeCause.getClass().getName(), causeCause instanceof IllegalStateException);
}
// Trying to execute CQ on non-existing region.
createCQ(client, "testCQCreateClose_2", invalidCQs[0]);
try {
executeCQ(client, "testCQCreateClose_2", false, "RegionNotFoundException");
fail("Trying to create CQ on non-existing Region. Should have thrown Exception.");
} catch (org.apache.geode.test.dunit.RMIException rmiExc) {
Throwable cause = rmiExc.getCause();
if (!(cause instanceof AssertionError)) {
LogWriterUtils.getLogWriter().severe("Expected to see an AssertionError.", cause);
fail("wrong error");
}
// should be a RegionNotFoundException
Throwable causeCause = cause.getCause();
if (!(causeCause instanceof RegionNotFoundException)) {
LogWriterUtils.getLogWriter().severe("Expected cause to be RegionNotFoundException", cause);
fail("wrong cause");
}
}
/* Test CQ Count - Above failed create should not increment the CQ cnt. */
validateCQCount(client, 2);
createCQ(client, "testCQCreateClose_3", cqs[2]);
validateCQCount(client, 3);
/* Test for closeAllCQs() */
client.invoke(new CacheSerializableRunnable("CloseAll CQ :") {
public void run2() throws CacheException {
LogWriterUtils.getLogWriter().info("### Close All CQ. ###");
// Get CQ Service.
QueryService cqService = null;
try {
cqService = getCache().getQueryService();
} catch (Exception cqe) {
cqe.printStackTrace();
LogWriterUtils.getLogWriter().info("Failed to getCQService.", cqe);
fail("Failed to getCQService.");
}
// Close CQ.
try {
cqService.closeCqs();
} catch (Exception ex) {
ex.printStackTrace();
LogWriterUtils.getLogWriter().info("Failed to close All CQ.", ex);
fail("Failed to close All CQ. " + ex.getMessage());
}
}
});
validateCQCount(client, 0);
// Initialize.
createCQ(client, "testCQCreateClose_2", cqs[1]);
createCQ(client, "testCQCreateClose_4", cqs[1]);
createCQ(client, "testCQCreateClose_5", cqs[1]);
// Execute few of the initialized cqs
executeCQ(client, "testCQCreateClose_4", false, null);
executeCQ(client, "testCQCreateClose_5", false, null);
// Call close all CQ.
client.invoke(new CacheSerializableRunnable("CloseAll CQ 2 :") {
public void run2() throws CacheException {
LogWriterUtils.getLogWriter().info("### Close All CQ 2. ###");
// Get CQ Service.
QueryService cqService = null;
try {
cqService = getCache().getQueryService();
} catch (Exception cqe) {
cqe.printStackTrace();
fail("Failed to getCQService.");
}
// Close CQ.
try {
cqService.closeCqs();
} catch (Exception ex) {
ex.printStackTrace();
fail("Failed to close All CQ . " + ex.getMessage());
}
}
});
// Close.
closeClient(client);
closeServer(server);
}
Aggregations