use of org.apache.geode.cache.query.CqExistsException in project geode by apache.
the class CqDataUsingPoolDUnitTest method createCq.
private CqQuery createCq(String regionName, String cqName) {
// Create CQ Attributes.
CqAttributesFactory cqAf = new CqAttributesFactory();
// Initialize and set CqListener.
CqListener[] cqListeners = { new CqListener() {
@Override
public void close() {
}
@Override
public void onEvent(CqEvent aCqEvent) {
}
@Override
public void onError(CqEvent aCqEvent) {
}
} };
cqAf.initCqListeners(cqListeners);
CqAttributes cqa = cqAf.create();
// Create cq's
// Get the query service for the Pool
QueryService queryService = CacheServerTestUtil.getCache().getQueryService();
CqQuery query = null;
try {
query = queryService.newCq(cqName, "Select * from /" + regionName, cqa);
query.execute();
} catch (CqExistsException e) {
fail("Could not find specified region:" + regionName + ":", e);
} catch (CqException e) {
fail("Could not find specified region:" + regionName + ":", e);
} catch (RegionNotFoundException e) {
fail("Could not find specified region:" + regionName + ":", e);
}
return query;
}
use of org.apache.geode.cache.query.CqExistsException in project geode by apache.
the class DurableClientSimpleDUnitTest method testReadyForEventsNotCalledImplicitlyWithCacheXML.
/**
* This test method is disabled because it is failing periodically and causing cruise control
* failures See bug #47060 (test seems to be enabled now!)
*/
@Test
public void testReadyForEventsNotCalledImplicitlyWithCacheXML() {
try {
setPeriodicACKObserver(durableClientVM);
final String cqName = "cqTest";
// Start a server
int serverPort = (Integer) this.server1VM.invoke(() -> CacheServerTestUtil.createCacheServerFromXml(DurableClientTestCase.class.getResource("durablecq-server-cache.xml")));
// Start a durable client that is not kept alive on the server when it
// stops normally
final String durableClientId = getName() + "_client";
// create client cache from xml
this.durableClientVM.invoke(() -> CacheServerTestUtil.createCacheClientFromXml(DurableClientTestCase.class.getResource("durablecq-client-cache.xml"), "client", durableClientId, 45, Boolean.FALSE));
// verify that readyForEvents has not yet been called on all the client's pools
this.durableClientVM.invoke(new CacheSerializableRunnable("check readyForEvents not called") {
@Override
public void run2() throws CacheException {
for (Pool p : PoolManager.getAll().values()) {
assertEquals(false, ((PoolImpl) p).getReadyForEventsCalled());
}
}
});
// Send clientReady message
this.durableClientVM.invoke(new CacheSerializableRunnable("Send clientReady") {
@Override
public void run2() throws CacheException {
CacheServerTestUtil.getCache().readyForEvents();
}
});
registerDurableCq(cqName);
// Verify durable client on server1
this.server1VM.invoke(new CacheSerializableRunnable("Verify durable client") {
@Override
public void run2() throws CacheException {
// Find the proxy
checkNumberOfClientProxies(1);
CacheClientProxy proxy = getClientProxy();
assertNotNull(proxy);
// Verify that it is durable
assertTrue(proxy.isDurable());
assertEquals(durableClientId, proxy.getDurableId());
}
});
// Start normal publisher client
this.publisherClientVM.invoke(() -> CacheServerTestUtil.createCacheClient(getClientPool(getServerHostName(publisherClientVM.getHost()), serverPort, false), regionName));
// Publish some entries
final int numberOfEntries = 10;
publishEntries(numberOfEntries);
// Verify the durable client received the updates
this.durableClientVM.invoke(new CacheSerializableRunnable("Verify updates") {
@Override
public void run2() throws CacheException {
// Get the region
Region region = CacheServerTestUtil.getCache().getRegion(regionName);
assertNotNull(region);
// Get the listener and wait for the appropriate number of events
QueryService queryService = CacheServerTestUtil.getPool().getQueryService();
CqQuery cqQuery = queryService.getCq(cqName);
CacheServerTestUtil.ControlCqListener cqlistener = (CacheServerTestUtil.ControlCqListener) cqQuery.getCqAttributes().getCqListener();
cqlistener.waitWhileNotEnoughEvents(30000, numberOfEntries);
assertEquals(numberOfEntries, cqlistener.events.size());
}
});
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
fail("interrupted", e);
}
// Stop the durable client
this.durableClientVM.invoke(() -> CacheServerTestUtil.closeCache(new Boolean(true)));
// Verify the durable client still exists on the server
this.server1VM.invoke(new CacheSerializableRunnable("Verify durable client") {
@Override
public void run2() throws CacheException {
// Find the proxy
CacheClientProxy proxy = getClientProxy();
assertNotNull(proxy);
}
});
// Publish some more entries
publishEntries(numberOfEntries);
this.publisherClientVM.invoke(() -> CacheServerTestUtil.closeCache());
// Re-start the durable client
this.durableClientVM.invoke(() -> CacheServerTestUtil.createCacheClientFromXml(DurableClientTestCase.class.getResource("durablecq-client-cache.xml"), "client", durableClientId, 45, Boolean.FALSE));
// Durable client registers durable cq on server
this.durableClientVM.invoke(new CacheSerializableRunnable("Register cq") {
@Override
public void run2() throws CacheException {
// Get the region
Region region = CacheServerTestUtil.getCache().getRegion(regionName);
assertNotNull(region);
// Create CQ Attributes.
CqAttributesFactory cqAf = new CqAttributesFactory();
// Initialize and set CqListener.
CqListener[] cqListeners = { new CacheServerTestUtil.ControlCqListener() };
cqAf.initCqListeners(cqListeners);
CqAttributes cqa = cqAf.create();
// Create cq's
// Get the query service for the Pool
QueryService queryService = CacheServerTestUtil.getPool().getQueryService();
try {
CqQuery query = queryService.newCq(cqName, "Select * from /" + regionName, cqa, true);
query.execute();
} catch (CqExistsException e) {
fail("Failed due to ", e);
} catch (CqException e) {
fail("Failed due to ", e);
} catch (RegionNotFoundException e) {
fail("Could not find specified region:" + regionName + ":", e);
}
}
});
// Send clientReady message
this.durableClientVM.invoke(new CacheSerializableRunnable("Send clientReady") {
@Override
public void run2() throws CacheException {
CacheServerTestUtil.getCache().readyForEvents();
}
});
// Verify durable client on server
this.server1VM.invoke(new CacheSerializableRunnable("Verify durable client") {
@Override
public void run2() throws CacheException {
// Find the proxy
checkNumberOfClientProxies(1);
CacheClientProxy proxy = getClientProxy();
assertNotNull(proxy);
// Verify that it is durable and its properties are correct
assertTrue(proxy.isDurable());
assertEquals(durableClientId, proxy.getDurableId());
}
});
// Verify the durable client received the updates held for it on the server
this.durableClientVM.invoke(new CacheSerializableRunnable("Verify updates") {
@Override
public void run2() throws CacheException {
// Get the region
Region region = CacheServerTestUtil.getCache().getRegion(regionName);
assertNotNull(region);
QueryService queryService = CacheServerTestUtil.getPool().getQueryService();
CqQuery cqQuery = queryService.getCq(cqName);
CacheServerTestUtil.ControlCqListener cqlistener = (CacheServerTestUtil.ControlCqListener) cqQuery.getCqAttributes().getCqListener();
cqlistener.waitWhileNotEnoughEvents(30000, numberOfEntries);
assertEquals(numberOfEntries, cqlistener.events.size());
}
});
// Stop the durable client
this.durableClientVM.invoke(() -> CacheServerTestUtil.closeCache());
// Stop the server
this.server1VM.invoke(() -> CacheServerTestUtil.closeCache());
} finally {
unsetPeriodicACKObserver(durableClientVM);
}
}
use of org.apache.geode.cache.query.CqExistsException in project geode by apache.
the class ProxyQueryService method newCq.
public CqQuery newCq(String queryString, CqAttributes cqAttributes, boolean isDurable) throws QueryInvalidException, CqException {
preOp(true);
ClientCQ cq = null;
try {
cq = ((DefaultQueryService) realQueryService).getCqService().newCq(null, queryString, cqAttributes, ((DefaultQueryService) realQueryService).getPool(), isDurable);
cq.setProxyCache(this.proxyCache);
this.cqNames.add(cq.getName());
} catch (CqExistsException cqe) {
// Should not throw in here.
if (logger.isDebugEnabled()) {
logger.debug("Unable to createCq. Error: {}", cqe.getMessage(), cqe);
}
} finally {
postOp();
}
return cq;
}
use of org.apache.geode.cache.query.CqExistsException in project geode by apache.
the class CqQueryUsingPoolDUnitTest method testCQCreateClose.
/**
* Test for CQ register and UnRegister.
*/
@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(() -> CqQueryUsingPoolDUnitTest.getCacheServerPort());
final String host0 = NetworkUtils.getServerHostName(server.getHost());
String poolName = "testCQCreateClose";
System.out.println("##### Pool Name :" + poolName + " host :" + host0 + " port :" + thePort);
createPool(client, poolName, host0, thePort);
/* Create CQs. */
createCQ(client, poolName, "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.
// UNCOMMENT....
createAndExecCQNoName(client, poolName, cqs[0]);
// Accessing the closed CQ.
failIfCQExists(client, "testCQCreateClose_0");
// re-Create the cq which is closed.
createCQ(client, poolName, "testCQCreateClose_0", cqs[0]);
/* Test CQ Count */
validateCQCount(client, 1);
// Registering CQ with same name from same client.
try {
createCQ(client, poolName, "testCQCreateClose_0", cqs[0]);
fail("Trying to create CQ with same name. Should have thrown CQExistsException");
} catch (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 (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);
}
validateCQCount(client, 1);
createCQ(client, poolName, "testCQCreateClose_3", cqs[2]);
validateCQCount(client, 2);
/* Test for closeAllCQs() */
client.invoke(new CacheSerializableRunnable("CloseAll CQ :") {
@Override
public void run2() throws CacheException {
LogWriterUtils.getLogWriter().info("### Close All CQ. ###");
// Get CQ Service.
QueryService cqService = null;
try {
cqService = getCache().getQueryService();
} catch (Exception cqe) {
LogWriterUtils.getLogWriter().info("Failed to getCQService.", cqe);
Assert.fail("Failed to getCQService.", cqe);
}
// Close CQ.
try {
cqService.closeCqs();
} catch (Exception ex) {
LogWriterUtils.getLogWriter().info("Failed to close All CQ.", ex);
Assert.fail("Failed to close All CQ. ", ex);
}
}
});
validateCQCount(client, 0);
// Initialize.
createCQ(client, poolName, "testCQCreateClose_2", cqs[1]);
createCQ(client, poolName, "testCQCreateClose_4", cqs[1]);
createCQ(client, poolName, "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 :") {
@Override
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) {
Assert.fail("Failed to getCQService.", cqe);
}
// Close CQ.
try {
cqService.closeCqs();
} catch (Exception ex) {
Assert.fail("Failed to close All CQ . ", ex);
}
}
});
// Close.
closeClient(client);
closeServer(server);
}
use of org.apache.geode.cache.query.CqExistsException 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